// 建议:设置一个全局变量,内循环跳出前置变量值,外循环判断该变量,
// 若为内循环跳出前设置的值,外循环也break。
// 查找字符串中第一次不重复的字符
// 返回第一次重复的字符的下坐标
private static char searchFirstNotRepeatChar(Character[] c1){
Character[] temp = c1.clone();
List indexList = new ArrayList();
boolean b;
if (c1.length < 1) {
return 0;
} else {
for (int i = 1; i < c1.length; i++) {
b = false;
for (int j = 0; j < i; j++) {
// 判断和以前的字符有重复的
if (c1[i] == temp[j]) {
b = true;
break;
}
}
// 判断和以前没重复的,放进list中
if (b == false) {
indexList.add(c1[i]);
} else {
// 有重复的,先判断以前列表有没有已存进去的重复值,如果有删除
if (indexList.contains(c1[i])) {
indexList.remove(c1[i]);
}
}
}
if (indexList.size() == 0) {
return 0;
} else {
return (Character) indexList.get(0);
}
}
}
@Test
public void test6(){
Character[] c = {'a', 'b', 'd', 'd', 'e', 'b', 'a', 'd', 'a', 'a'};
System.out.println("firstnotrepeatchar: " + searchFirstNotRepeatChar(c));
}
如果各位大侠还有更好的算法,还请不吝赐教,谢谢