将一个字符串找出第一次重复出现的字符,求大神给个代码, 简单点的。谢谢
bool f = false;
for (int i = 1; i < str.length() && !f; i++)
{
for (int j = 0; j < i && !f; j++)
{
if (str.charAt(i) == str.charAt(j))
{
System.out.println(str.charat(i));
f = true;
}
}
}
利用Hash的思路应该是最简单的,这里假定你的字符串全部是ASCII字符,不包括中文,那么只需要建立一个长度为256的hash表。初始时表中元素都为0。Hash函数选择为取字符的ASCII码的值。然后从头到尾扫描字符串,遇到一个字符就计算它的ASCII码,比如,‘A’的ASCII码为65,就将hash表中下标为65处置1。这样一直扫描下去,如果在某次将某个位置置1时发现这个位置已经是1了说明是重复字符,第一次出现这种情况时对应的字符就是第一次重复出现的字符。
不考虑效率,两重循环,最简单了。
public static void main(String[] args) throws ScriptException {
String string = "abcdefgsdfsdf";
char[] ch = string.toCharArray();
Set<Character> set = new HashSet<>();
for (char c : ch) {
//利用hashset不能添加重复元素的特性
if (!set.add(c)) {
System.out.println("第一个重复的字符:" + c);
set.clear();
break;
}
}
}