Java 字符串去重:最小删除字符数

给定一个字符串 's',现想让你删除掉一些字符,使得这个字符串每一个字符出现的次数均不相同。计算最少需要删除多少个字符。

以下是使用 Java 编写的解决方案:

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

public class RemoveChars {

    public static int minDeletions(String s) {
        // 统计每个字符出现的次数
        Map<Character, Integer> charCount = new HashMap<>();
        for (char c : s.toCharArray()) {
            charCount.put(c, charCount.getOrDefault(c, 0) + 1);
        }

        int deletionCount = 0;
        // 遍历统计结果,如果有相同次数的字符,则进行删除操作
        for (int count : charCount.values()) {
            while (count > 1 && charCount.containsValue(count)) {
                count--;
                deletionCount++;
            }
        }

        return deletionCount;
    }

    public static void main(String[] args) {
        String s = 'aabbccddeeffgghhii';
        int minDeletions = minDeletions(s);
        System.out.println('最少需要删除的字符数:' + minDeletions);
    }
}

在这个示例中,我们使用了一个 HashMap 来统计每个字符出现的次数。然后,我们遍历这个统计结果,并使用 while 循环来删除出现次数相同的字符,直到每个字符的出现次数都不相同为止。最后,返回删除字符的计数。对于输入字符串 'aabbccddeeffgghhii',该程序将输出最少需要删除的字符数为 9。

Java 字符串去重:最小删除字符数

原文地址: http://www.cveoy.top/t/topic/0of 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录