第一个只出现一次的字符
第一个只出现一次的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
这道题没什么好解法,就是哈希。这里它限定了“全部由字母组成”,所以只需要考虑a-zA-Z即可,但是要注意哈希表的长度要设置为58而不是2*26.因为小写和大写直接还有几个其他符号
遍历两次字符串,第一次往哈希表里填,第二次在哈希表中找只出现一次的。因为是遍历字符串,所以也就保证了是“第一个”
public class Solution {
public int FirstNotRepeatingChar(String str) {
int length=str.length();
if(length<1){
return -1;
}
int[] hash=new int[58];
for(int i=0;i<length;i++){
hash[str.charAt(i)-'A']++;
}
for(int i=0;i<length;i++){
if(hash[str.charAt(i)-'A']==1){
return i;
}
}
return -1;
}
}
- 使用new动态声明的数组会自动初始化为0
- ASCII码中,大写在前,小写在后

浙公网安备 33010602011771号