gpt4 book ai didi

java - 代码未通过 LeetCode #451 上的最终测试用例,适用于所有其他测试用例?

转载 作者:行者123 更新时间:2023-12-01 06:02:40 25 4
gpt4 key购买 nike

我希望有人可以帮助我理解为什么我的代码不适用于某个测试用例。这是关于 LeetCode 上的第 451 题:按频率对字符进行排序。目标是:“给定一个字符串,根据字符出现的频率按降序对其进行排序。”我的代码通过了 34/35 的测试用例,但没有通过最后一个。我想知道为什么我的代码适用于其他测试用例但不适用于最后一个测试用例,以及我可以做些什么来修复它以便它也适用于最后一个测试用例?

 class Solution {
public String frequencySort(String s) {
Map<Character, Integer> map = new HashMap<>();
for(char c: s.toCharArray()){
map.put(c, map.getOrDefault(c, 0) + 1);
}
StringBuilder sb = new StringBuilder(s.length());
Map<Character,Integer> sorted = new TreeMap<>(new Comparator<Character>() {
@Override
public int compare(Character a, Character b){
Integer aValue = map.get(a);
Integer bValue = map.get(b);
if(aValue == bValue) return 1;
return bValue.compareTo(aValue);
}
});
sorted.putAll(map);
for(Map.Entry<Character,Integer> entry: sorted.entrySet()){
int length = entry.getValue();
char toAdd = entry.getKey();
for(int i = 1; i <= length; i++){
sb.append(toAdd);
}
}
return new String(sb);
}
}

Test Case

最佳答案

如果您愿意,这里有简单的 Scala 解决方案:

object Solution {
def frequencySort(s: String): String = {
import collection.mutable.Map
val count: Map[Char, Int] = Map().withDefaultValue(0)
for {
c <- s
} {
count(c) += 1
}
count
.toList.map(x => (x._2, x._1))
.sorted
.reverse
.flatMap(x => List.fill(x._1)(x._2.toString))
.foldLeft("")(_ + _)
}
}

关于java - 代码未通过 LeetCode #451 上的最终测试用例,适用于所有其他测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54104744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com