如何对字符数组按字母排序并将各字符出现次数拼接为整数返回
函数实现方案
完整代码
function numberRepresentation(arr) { // 空数组特殊处理 if (!arr.length) return 0 // 1. 对数组按字母升序排序 const sortedArr = arr.sort() let countStr = '' let currentChar = sortedArr[0] let currentCount = 1 // 2. 遍历统计连续相同字符的出现次数 for (let i = 1; i < sortedArr.length; i++) { if (sortedArr[i] === currentChar) { currentCount++ } else { countStr += currentCount currentChar = sortedArr[i] currentCount = 1 } } // 追加最后一个字符的计数 countStr += currentCount // 3. 转成数字类型返回 return Number(countStr) }
功能验证
你提供的示例输入测试:
输入['b','a','a','a','c','b','a'],执行后排序结果为['a','a','a','a','b','b','c'],统计得到次数依次为4、2、1,拼接后转数字返回421,完全符合需求。
关键逻辑说明
- 排序直接使用JS数组原生
sort()方法,默认对字符串元素按Unicode码点升序排列,刚好匹配字母升序排序的需求 - 遍历排序后的数组直接统计连续相同字符的次数,不需要额外用对象存储所有字符计数后再二次排序,运行效率更高
- 最后将拼接好的数字字符串转成Number类型返回,符合函数返回值要求
内容的提问来源于stack exchange,提问作者314
相关产品推荐
相关产品推荐

