转载

Java程序查找字符串的重复字符

解决这个问题的标准方法是从String中获取字符数组,遍历它并构建一个包含字符及其计数的Map。然后遍历该Map并打印出现不止一次的字符。所以你实际上需要两个循环来完成这项工作,第一个循环来构建地图,第二个循环来打印字符和计数。

查看下面的例子,只有一个名为printDuplicateCharacters()的静态方法,它可以同时执行这两项工作。我们首先通过调用toCharArray()从String中获取字符数组。

接下来我们使用HashMap来存储字符及其计数。我们使用containsKey()方法来检查密钥是否已经存在,如果已经存在,我们通过调用get()方法从HashMap获取旧计数,并在将其递增1之后将其存储回来。

如何在字符串JavaOnce中找到重复的字符?我们用每个字符和计数构建Map,接下来的任务是循环遍历Map并检查每个条目,如果count(条目的值大于1),那么该字符已经发生了不止一次。您可以打印重复的字符,也可以使用它们执行任何操作。

<b>import</b> java.util.HashMap;
<b>import</b> java.util.Map;
<b>import</b> java.util.Scanner;
<b>import</b> java.util.Set;

<font><i>/**
* Java Program to find duplicate characters in String.
*
*
* @author http://java67.blogspot.com
*/</i></font><font>
<b>public</b> <b>class</b> FindDuplicateCharacters{

    <b>public</b> <b>static</b> <b>void</b> main(String args[]) {
        printDuplicateCharacters(</font><font>"Programming"</font><font>);
        printDuplicateCharacters(</font><font>"Combination"</font><font>);
        printDuplicateCharacters(</font><font>"Java"</font><font>);
    }

    </font><font><i>/*
     * Find all duplicate characters in a String and print each of them.
     */</i></font><font>
    <b>public</b> <b>static</b> <b>void</b> printDuplicateCharacters(String word) {
        <b>char</b>[] <b>char</b>acters = word.toCharArray();

        </font><font><i>// build HashMap with character and number of times they appear in String</i></font><font>
        Map<Character, Integer> charMap = <b>new</b> HashMap<Character, Integer>();
        <b>for</b> (Character ch : characters) {
            <b>if</b> (charMap.containsKey(ch)) {
                charMap.put(ch, charMap.get(ch) + 1);
            } <b>else</b> {
                charMap.put(ch, 1);
            }
        }

        </font><font><i>// Iterate through HashMap to print all duplicate characters of String</i></font><font>
        Set<Map.Entry<Character, Integer>> entrySet = charMap.entrySet();
        System.out.printf(</font><font>"List of duplicate characters in String '%s' %n"</font><font>, word);
        <b>for</b> (Map.Entry<Character, Integer> entry : entrySet) {
            <b>if</b> (entry.getValue() > 1) {
                System.out.printf(</font><font>"%s : %d %n"</font><font>, entry.getKey(), entry.getValue());
            }
        }
    }

}

Output
List of duplicate characters in String 'Programming'
g : 2
r : 2
m : 2
List of duplicate characters in String 'Combination'
n : 2
o : 2
i : 2
List of duplicate characters in String 'Java'
</font>

这就是如何在String中查找重复字符的全部内容。 如果在编程工作面试中遇到此问题,您可以放心地编写解决方案并解释它们。

原文  https://www.jdon.com/51800
正文到此结束
Loading...