从今天开始,刷题慢工细作!
HashMap解法
public class Solution {
public int firstUniqChar(String s) {
Map<Character, Integer> charMap = new HashMap<Character, Integer>();
for (int i = 0; i < s.length(); i++) {
char curChar = s.charAt(i);
if (charMap.containsKey(curChar)) {
charMap.put(curChar, charMap.get(curChar) + 1);
}
else {
charMap.put(curChar, 1);
}
}
for (int i = 0; i < s.length(); i++) {
char curChar = s.charAt(i);
if (charMap.get(curChar) == 1) {
return i;
}
}
return -1;
}
}第二种解法,用array
public class Solution {
public int firstUniqChar(String s) {
int[] charArray = new int[26];
for (int i = 0; i < s.length(); i++) {
char cur = s.charAt(i);
charArray[cur - 'a']++;
}
for (int i = 0; i < s.length(); i++) {
char cur = s.charAt(i);
if (charArray[cur - 'a'] == 1) {
return i;
}
}
return -1;
}
}
本文介绍两种高效算法来找出字符串中首次出现的唯一字符的位置:一种使用HashMap存储字符频率,另一种利用固定长度数组优化查找过程。适用于面试刷题及日常字符串处理。
497

被折叠的 条评论
为什么被折叠?



