LeetCode-387-字串中的第一個唯一字元

雄獅虎豹發表於2021-10-05

字串中的第一個唯一字元

題目描述:給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -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"));
    }
}
【每日寄語】 閃光的未必都是金子,而沉默的也不一定就是石頭。

相關文章