题目:
思路:
(1):转char,然后排序,时间复杂度是nlogn
(2):字符串,全部是字母,那么很简单,就是简单的桶排序问题,申请一个数组,然后记录每个字母出现的次数,找到出现奇次数的字母,然后查找他的位置。时间复杂度是O(n)
第二个思路的代码:
public class Solution {
public int FirstNotRepeatingChar(String str) {
if (str.length() ==0)
return -1;
int result =10001;
char[] tem =str.toCharArray();
int [] size = new int[123];
for(int i=0;i<tem.length;i++){
if (size[(byte)tem[i]] ==0){
size[(byte)tem[i]] = i+1;
}else {
size[(byte)tem[i]] =10001;
}
}
for (int i=65;i< size.length;i++){
if (size[i]!=0 && size[i] !=10001){
if (result >size[i])
result =size[i];
}
}
if (result ==10001)
return -1;
return result-1;
}
}