You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby数据结构处理代码的迭代器/条件部分问题求助

修复Ruby数字降序重排函数的迭代逻辑问题

你的代码存在三个关键问题,导致迭代未按预期完成,输出结果错误:

  • 条件判断错误:if i=new.max()是赋值操作(把当前数组最大值赋给i),而非比较操作(判断i是否等于最大值)。这会导致循环逻辑完全偏离预期。
  • 循环中修改迭代数组:for循环遍历new数组时,执行new.delete(i)会直接修改数组结构,导致迭代流程被打断。而且Array#delete(i)会删除数组中所有匹配i的元素,直接丢失重复的目标数字(比如输入里的两个6)。
  • 迭代思路冗余且错误:试图通过遍历原数组元素筛选最大值的逻辑完全没必要,反而会因为动态修改数组导致元素丢失或跳过。

修复后的简洁实现

直接利用排序完成降序重排是最可靠的方式,代码简洁且不易出错:

def descending_order(n)
  n.to_s.chars.sort.reverse.join.to_i
end

或者如果你偏好使用digits方法:

def descending_order(n)
  n.digits.sort.reverse.join.to_i
end

逻辑说明

  1. n.to_s.chars:将输入数字转为字符串,再拆分为单个字符的数组(例如6022563会变成["6","0","2","2","5","6","3"])
  2. sort.reverse:对数组升序排序后反转,得到降序排列的数组(["6","6","5","3","2","2","0"])
  3. join.to_i:将字符数组拼接为字符串,再转换为整数,最终得到预期结果6653220

测试输入descending_order(6022563)会正确返回6653220。

内容的提问来源于stack exchange,提问作者Panamaniac507

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:25:35