Java检查字符串中的重复字母

2024-02-15

我在弄清楚如何检查用户输入的重复字母时遇到问题。程序需要将重复的字母输出为 true,如果没有则输出为 false。程序不应计算重复的数字或符号。

例如:

  • 用户输入:巧克力
    程序输出:真

  • 用户输入:112奶油
    程序输出:假


这是另一个版本,基于 @rell 的回答,但没有HashSet or char[]创建。

private static boolean check(String input) {
    for (int i = 0; i < input.length(); i++) {
        char ch = input.charAt(i);
        if (Character.isLetter(ch) && input.indexOf(ch, i + 1) != -1) {
            return true;
        }
    }
    return false;
}

对于较小的输入字符串,这很可能会更快。但对于较长的输入字符串,@rell 的版本可能更快,因为他使用的是HashSet with O(1)查找/插入,并且由于循环是O(n)总计是O(n)。我的解决方案是O(n^2) (loop O(n)乘以indexOfwith O(n)),最坏情况的输入会是这样的abcdefghijklmnopqrstuvwxyzz.

Update另一个带有流的版本。

private static boolean check(String input) {
    IntStream characters = input.codePoints().filter(Character::isLetter);
    return characters
            .distinct()
            .count() == characters.count();
}

Update修复了流版本中的错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java检查字符串中的重复字母 的相关文章

随机推荐