查找字符串中的重复字符

内容纲要

需求描述

Write a Java Program to find the duplicate characters in a string.

解决方案

在下面的示例中,我们将使用HashMap来查找字符串中的重复字符。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        String str = "Programming";
        char[] chars = str.toCharArray();
        Map<Character, Integer> charMap = new HashMap<>();
        for (char c : chars) {
            if (charMap.containsKey(c)) {
                charMap.put(c, charMap.get(c) + 1);
            } else {
                charMap.put(c, 1);
            }
        }
        Set<Map.Entry<Character, Integer>> entrySet = charMap.entrySet();
        System.out.printf("List of duplicate characters in String '%s' %n", str);
        for (Map.Entry<Character, Integer> entry : entrySet) {
            if (entry.getValue() > 1) {
                System.out.printf("%s : %d %n", entry.getKey(), entry.getValue());
            }
        }
    }
}

解释:

在这段代码中,我们首先创建了一个名为 charMap 的 HashMap。然后,我们将输入的字符串转换为字符数组,然后遍历这个数组。对于每一个字符,我们检查 charMap 中是否已经存在这个字符。如果存在,那么我们将这个字符的计数加一。如果不存在,那么我们将这个字符添加到 charMap 中,并将其计数设为1。

接着,我们获取 charMap 的 entrySet,然后遍历它。对于每一个 entry,我们检查其值是否大于1。如果大于1,那么就表示这个字符是重复的,我们就打印出这个字符及其重复的次数。

时间复杂度:这个算法的时间复杂度为 O(n),其中 n 是输入字符串的长度。

空间复杂度:这个算法的空间复杂度为 O(n),因为我们需要创建一个 HashMap 来存储字符及其出现的次数。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward