题目:
对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
测试样例:
“qywyer23tdd”,11
返回:y
思路:我们这里使用hash表的方法来做这个问题,这里由于是字符可以直接使用数组代替我们的Hash表,具体做法遍历一次字符串数组,在java中就是我们的char数组,然后直接用大小为255的整形数组记录出现次数,如果第一个出现不为0的就直接返回。
public class FirstRepeat {
public char findFirstRepeat(String A, int n) {
if (A==null||A.length()<=0) {
return 0;
}
char[] array=A.toCharArray();
return find(array);
}
private char find(char[] array) {
int[] a=new int[255];
for (int i = 0; i < array.length; i++) {
if (a[array[i]]==0){
a[array[i]]++;
}else return array[i];
}
return 0;
}
}