您的位置:首页 > 其它

查找字符流中第一个出现的不重复字符

2014-09-15 22:28 211 查看
package com.a.b;

public class CharStatistics {

public static void main(String[] args) {
String string = "google";
char ch = getAppearOnce(string);
System.out.println(ch);
}

private static char getAppearOnce(String string) {
final int n = 256;
int[] map = new int
;
for (int i = 0; i < n; i++) {
map[i] = -1;
}
int length = string.length();
// 扫描一遍输入的字符,添加到hash map中
for (int i = 0; i < length; i++) {
char ch = string.charAt(i);
if (map[ch] == -1) {
// 保存字符出现的位置
map[ch] = i;
} else if (map[ch] >= 0) {
// 第二次出现之后,置为-1
map[ch] = -2;
}
}

char ret = '\0';
int minIndex = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
int index = map[i];
if (index >= 0 && index < minIndex) {
ret = (char) i;
minIndex = index;
}
}

return ret;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: