題目描述
在一個字符串(0<=字符串長度<=10000跃闹,全部由字母組成)中找到第一個只出現(xiàn)一次的字符,并返回它的位置, 如果沒有則返回 -1(需要區(qū)分大小寫).
解決方法
將所有字符和對應的索引存到map中嵌削,再遍歷map查找第一個出現(xiàn)一次的字符
public class Solution {
public int FirstNotRepeatingChar(String str) {
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
for (int i = 0; i < str.length(); i++) {
if (map.get(str.charAt(i)) == 1) {
return i;
}
}
return -1;
}
}
復雜度分析:
- 時間復雜度:O(n)。
- 空間復雜度:O(n)望艺。