1. 程式人生 > 實用技巧 >面試題50:第一個只出現一次的字元

面試題50:第一個只出現一次的字元

在一個字串(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;
}