Java 字符串去重:最小删除字符数
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。
原文地址: http://www.cveoy.top/t/topic/0of 著作权归作者所有。请勿转载和采集!