数字数组按0分块排序 分隔符替换为空格或X的实现问题
数组分块排序功能实现
实现逻辑
- 遍历数组过程中分别维护当前非0数字块、当前连续0的计数两个临时变量
- 遇到非0元素时,先处理此前累计的连续0:单个0补空格,2个及以上连续0补X,再将非0元素存入当前数字块
- 遇到0元素时,先处理此前累计的非0数字块:将数字块升序排序后转成字符串拼入结果,再将连续0计数+1
- 遍历结束后,收尾处理剩余的未拼接的数字块和连续0计数,得到最终结果
补全后可运行代码
// 测试用输入数组 var myArray = [1,3,2,0,7,8,1,3,0,6,7,1] // var myArray = [2,1,0,0,3,4] // 示例2输入可替换测试 let result = ''; let currentNumberBlock = []; let zeroCount = 0; for(let i = 0; i < myArray.length; i++){ const current = myArray[i]; if(current !== 0){ // 先处理之前累计的0 if(zeroCount > 0){ result += zeroCount === 1 ? ' ' : 'X'; zeroCount = 0; } currentNumberBlock.push(current); }else{ // 先处理之前累计的数字块 if(currentNumberBlock.length > 0){ // 升序排序后拼接成字符串 result += currentNumberBlock.sort((a,b) => a - b).join(''); currentNumberBlock = []; } zeroCount++; } } // 遍历结束后处理剩余的内容 if(currentNumberBlock.length > 0){ result += currentNumberBlock.sort((a,b) => a - b).join(''); } if(zeroCount > 0){ result += zeroCount === 1 ? ' ' : 'X'; } console.log(result);
内容的提问来源于stack exchange,提问作者Yamid Ortiz Muñoz
相关产品推荐
相关产品推荐

