题目描述
对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
测试样例:
“qywyer23tdd”,11
返回:y
三种方法(都是基于哈希思想根据ascii码存储hash值)
① HashMap
② HashSet
③ 数组Hash
import java.util.*;
public class FirstRepeat {
public char findFirstRepeat(String A, int n) {
// write code here
int[] flag = new int[256];
Arrays.fill(flag, 0);
int ascii = 0;
char dc = ' ';
for(int i=0; i<n; i++){
char c = A.charAt(i);
ascii = (int)c;
flag[ascii] = flag[ascii] + 1;
if(flag[ascii] > 1){
dc = c;
break;
}
}
return dc;
}
}