题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
代码及测试用例
public class Solution {
public int FirstNotRepeatingChar(String str) {
//A-Z 65-90 ,a-z 97-122 所有数减去65存在数组中,以0开始 0-25,32-57
int[] result = new int[58];
//遍历字符串每个字符,有一个就在数组中对应位置加1,数组中的值表示字母个数
for(int i=0;i<str.length();i++){
result[((int)str.charAt(i))-65]+=1;
}
//从头遍历字符串,查看数组中对应字母个数是否为1,是的话,直接返回该字母在数组中的位置
for(int i=0;i<str.length();i++){
if(result[((int)str.charAt(i))-65]==1){
return i;
}
}
return -1;
}
public static void main(String[] args) {
Soulution s = new Soulution();
String str="ggbbedda";
int res = s.solution(str);
System.out.println(res);
}
}