//方法1:
public class GetFirstNotRepeatChar {
public static char getChar(String s){
char[] c = s.toCharArray();
int[][] tmp = new int[26][2];//临时数组,记录元素出现的次数,第1列记录出现的次数,第2列记录元素的下标
int pos = 26; //用于返回第一个不重复出现的字符所在的位置
for(int i=0; i<c.length; i++){
int shift = c[i] - 'a';
tmp[shift][0]++;
if(tmp[shift][1]==0) tmp[shift][1] = i;
}
for(int j=0; j<26; j++){
if(tmp[j][0]==1){
if(pos>tmp[j][1]){
pos = tmp[j][1];
}
}
}
if(pos==26){
return '0';
}else{
return c[pos];
}
}
//方法2:使用Java API提供的字符串处理函数
public static String findChar(String s){
String str = "Not find any char";
for(int i=0; i<s.length(); i++){
String char = String.valueOf(s.charAt(i));
//如果一个字符第一次出现和最后一次出现的的位置相同,则认为此字符在字符串中只出现一次
if(s.indexOf(char) == s.lastIndexOf(char)){
str = char;
break;//跳出循环
}
}
return str;
}
public static void main(String[] args){
System.out.println(GetFirstNotRepeatChar.getChar("agbfaaeff"));
System.out.println(GetFirstNotRepeatChar.findChar("agbfaaeff"));
}
}