java使用数组。sort可对字符串数组中的字谜进行排序
我想根据一组字谜对数组进行排序
例如:
[anew, sale, wane, ales, ascent, seal, wean, leas, secant]
应输出:
[anew, wane, wean, ales, leas, sale, seal, ascent, secant]
或者,它可以输出任意顺序的字谜,只要它们组合在一起
所以我试着这样做:
Arrays.sort(array, (s1, s2) -> {
if (s1.length < s2.length)
return -1;
else if (s1.length > s2.length)
return 1;
else
return s1.compareTo(s2);
});
但我明白了:
[secant, leas, wean, seal, ascent, ales, wane, sale, anew]
我知道问题出在比较仪上,但我不知道出了什么问题
# 1 楼答案
您的算法不可能工作,因为排序是通过比较本地元素来实现的。要按字谜的数量排序,您需要记住哪些字符串是彼此的字谜。这不是一个决定,这是可能的比较两个元素没有上下文。你需要首先识别和收集这些字谜。然后您可以构建结果列表
# 2 楼答案
结果:
这可能接近于对isAnagram方法进行一些调优所需要的(我为这个测试编写了一个粗略的快速版本,我没有检查一个字符串是否完全包含在另一个较大的字符串中)