在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
分析:
因为字母 A-Z 的ASCII码是65-90,a-z的ASCII码是96-122,使用一个长度为58(122-65+1)的数组,第一次遍历时给数组赋值,第二次遍历返回数值为1的数所在的位置。
public class Solution {
public int FirstNotRepeatingChar(String str) {
int s[]=new int[58];
for(int i=0;i<str.length();i++){
s[(int)str.charAt(i)-65]+=1;
}
for(int i=0;i<str.length();i++){
if(s[(int)str.charAt(i)-65]==1)
return i;
}
return -1;
}
}
总结:
涉及到全是字母这类,要联想ASCII码,因为这是ASCII里能背的