关于java:LeetCode387字符串中的第一个唯一字符

9次阅读

共计 1011 个字符,预计需要花费 3 分钟才能阅读完成。

字符串中的第一个惟一字符

题目形容:给定一个字符串,找到它的第一个不反复的字符,并返回它的索引。如果不存在,则返回 -1。

示例阐明请见 LeetCode 官网。

起源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl…
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

解法一:遍历字符串

首先,如果 snull或者空字符串,间接返回 -1。

如果 s 的长度只有 1,返回索引位 0。

s 的长度大于 1,申明一个 LinkedHashMap 用来记录每个字符呈现的次数,而后遍历 s 的每一个字符,将每一个字符和相应呈现的次数放入 LinkedHashMap 中。

而后按程序遍历 LinkedHashMap,判断是否存在value 为 1 即只呈现过一次的字符,如果存在,返回在 s 中的索引位。如果遍历完发现不存在,则返回 -1。

import java.util.LinkedHashMap;
import java.util.Map;

public class LeetCode_387 {public static int firstUniqChar(String s) {if (s == null || s.length() == 0) {return -1;}
        if (s.length() == 1) {return 0;}
        Map<Character, Integer> charCount = new LinkedHashMap<>();
        for (char c : s.toCharArray()) {if (charCount.containsKey(c)) {charCount.put(c, charCount.get(c) + 1);
            } else {charCount.put(c, 1);
            }
        }
        for (Map.Entry<Character, Integer> characterIntegerEntry : charCount.entrySet()) {if (characterIntegerEntry.getValue() == 1) {return s.indexOf(characterIntegerEntry.getKey());
            }
        }
        return -1;
    }

    public static void main(String[] args) {System.out.println(firstUniqChar("loveleetcode"));
    }
}

【每日寄语】闪光的未必都是金子,而缄默的也不肯定就是石头。

正文完
 0