public static Character FirstNonRepeated(String)
两个方法,第一个比较好理解:
1:
public class Test {
public static void main(String[] args) {
System.out.println(getChar("a*faskf"));
}
public static char getChar(String text){
char c =0xff;
for(int index =0;index <text.length();index ++){
c =text.charAt(index);
if(text.indexOf(c) ==text.lastIndexOf(c))
break;
}
return c;
}
} //由于用到了很多方法,所以时间复杂度略高,
0x开头表示的是16进制数
0xff转换成10进制就是255
2:
public class Test {
public static void main(String[] args) {
System.out.println(FirstNonRepeated("atdaskf"));
}
public static Character FirstNonRepeated(String str) {
int[] counter = new int[128];
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
counter[ch]++;; //“counter[ch]”,由于这里的ch是单个字符,作为数组下标时,会被自动转化为对应的ASCII值(也就是int类型的整数),
} //counter[]下标是从0开始,所以找到的字母需要加1,两个的时候就是2了
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(counter[ch] == 1)
return ch;
}
return null;
}
} //我只能说这个思路很牛,一些注释我也加在代码中了,时间复杂度也很低