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

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

5个回答

 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;
}
}
}
qq_34834408
qq_34834408 回复caozhy: 好的 谢谢了
大约 4 年之前 回复
caozhy
回答这么多问题就耍赖把我的积分一笔勾销了 如果问题得到了解决,请采纳下我的回答,方法是点我回答右边的采纳按钮,谢谢。
大约 4 年之前 回复
caozhy
回答这么多问题就耍赖把我的积分一笔勾销了 回复qq_34834408: 你不是只要找第一个么?找到了就不继续找了。
大约 4 年之前 回复
qq_34834408
qq_34834408 大神, &&!f是为什么?
大约 4 年之前 回复

利用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;
            }
        }
    }
立即提问