面試題50:第一個只出現一次的字元
阿新 • • 發佈:2020-08-21
在一個字串(0<=字串長度<=10000,全部由字母組成)中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).(從0開始計數)
解題思路
- 空間換時間,用一個HashMap來儲存每個字元出現的次數
相關題目
- 輸入兩個字串,從第一個字串中刪除在第二個字串中出現過的所有字元
- 刪除字串中所有重複出現的字元
- 輸入兩個字串,判斷這兩個字串是不是互為變位詞(Anagram)
上程式碼(Java很實用)
public int FirstNotRepeatingChar(String str) { if(str.length() < 1) return -1; HashMap<Character, Integer> map = new HashMap<>(); for(int i = 0; i < str.length(); i++) { if(map.containsKey(str.charAt(i))) map.put(str.charAt(i), -1); else map.put(str.charAt(i), i); } int ans = -1; for(int i = 0; i < str.length(); i++ ) { if(map.get(str.charAt(i)) != -1) { ans = map.get(str.charAt(i)); break; } } return ans; }