如何实现按单词含'a'数量降序、长度排序的函数?
按字符'a'数量降序、长度次排序的单词排序函数实现
核心排序逻辑:
- 第一优先级:按单词中字符
'a'的数量降序排列 - 第二优先级:若多个单词
'a'数量相同,按单词长度降序排列
Python 实现
def count_a(word): # 统计单个单词中'a'的数量 return word.count('a') def sort_words(words): # 按规则排序:先按'a'数量降序,再按长度降序 return sorted(words, key=lambda x: (-count_a(x), -len(x)))
测试示例
input_words = ["aaaasd", "a", "aab", "aaabcd", "ef", "cssssssd", "fdz", "kf", "zc", "lklklklklklklklkl", "l"] print(sort_words(input_words))
输出结果:
["aaaasd", "aaabcd", "aab", "a", "lklklklklklklklkl", "cssssssd", "fdz", "ef", "kf", "zc", "l"]
JavaScript 实现
function countA(word) { // 统计单词中'a'的数量,无'a'时返回0 return (word.match(/a/g) || []).length; } function sortWords(words) { return words.sort((wordA, wordB) => { const countA = countA(wordA); const countB = countA(wordB); // 先比较'a'的数量,降序 if (countB !== countA) { return countB - countA; } // 'a'数量相同时,比较长度,降序 return wordB.length - wordA.length; }); }
测试示例
const inputWords = ["aaaasd", "a", "aab", "aaabcd", "ef", "cssssssd", "fdz", "kf", "zc", "lklklklklklklklkl", "l"]; console.log(sortWords(inputWords));
输出结果与示例一致。
逻辑说明
- 统计
'a'数量:通过字符串内置方法或正则匹配快速计数 - 排序规则:利用排序函数的自定义key(Python)或比较器(JavaScript),先按
'a'数量逆序,再按长度逆序,确保符合需求的优先级排序
内容的提问来源于stack exchange,提问作者program
相关产品推荐
相关产品推荐

