如何按单词反转顺序对单词列表进行排序
按单词反转结果排序的实现方案
核心逻辑
排序时不直接对原单词做字典序比较,而是将每个单词的字符完全反转后生成排序键,按照排序键的字典序升序排列原单词即可。
你可以先对照反转结果验证排序逻辑的正确性:
banana反转后为ananaborange反转后为egnaroapple反转后为elppahealthy反转后为yhtlaeh
上述反转字符串的字典序升序正好对应给出的正确排序结果。
注意:反转操作仅用于生成排序比较的依据,最终输出的列表元素仍然是原始单词,不需要输出反转后的字符串。
不同语言的代码实现
Python
利用内置sorted函数的key参数,直接传入字符串反转的逻辑作为排序键即可,实现最简洁:
words = ["apple", "banana", "orange", "healthy"] sorted_words = sorted(words, key=lambda word: word[::-1]) print(sorted_words) # 运行输出:['banana', 'orange', 'apple', 'healthy']
JavaScript
调用数组的sort方法时,自定义比较函数,对两个待比较的单词分别做反转后再做字典序对比:
const words = ["apple", "banana", "orange", "healthy"]; const sortedWords = words.sort((a, b) => { const reversedA = a.split('').reverse().join(''); const reversedB = b.split('').reverse().join(''); return reversedA.localeCompare(reversedB); }); console.log(sortedWords); // 运行输出:['banana', 'orange', 'apple', 'healthy']
Java
借助Stream流的排序API,通过Comparator指定反转字符串为比较键:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class ReverseSortDemo { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "orange", "healthy"); List<String> sortedWords = words.stream() .sorted((a, b) -> new StringBuilder(a).reverse() .toString() .compareTo(new StringBuilder(b).reverse().toString())) .collect(Collectors.toList()); System.out.println(sortedWords); // 运行输出:[banana, orange, apple, healthy] } }
内容的提问来源于stack exchange,提问作者user3310334
相关产品推荐
相关产品推荐

