对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。
今天面试考到了这道题,我只想出来一个O(n^2)的算法,回来在网上发现一个算法很神奇
*private static String findFirstRepeatChar(String string) {
int[] charset = new int[8];
char[] chars = string.toCharArray();
for (char c : chars) {
int row = c / 32;
int col = c % 32;
if ((charset[row] & 1 << col) != 0) {
return String.valueOf(c);
} else {
charset[row] |= (1 << col);
}
}
return "-1";
}*
虽然我也看不懂,但是我明白为什么面试官问我了不了解java的位运算了