JAVA基础问题, 本人新手 求大神详细讲解

将一个字符串找出第一次重复出现的字符,求大神给个代码, 简单点的。谢谢

 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了说明是重复字符,第一次出现这种情况时对应的字符就是第一次重复出现的字符。

http://zhidao.baidu.com/link?url=c3y0rSMYsl0VMoPjB3kFcbZNhj1nr-F4gfZiaTeF2U0tfYjjTr3uMC61a04qvnssZpPvSsph878qj3JXaWu2Za

不考虑效率,两重循环,最简单了。

 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;
            }
        }
    }