Ruby回文检测代码字符串比较未返回正确结果,求问题排查
回文检测代码问题分析
你的代码存在两个关键问题,导致无法正确判断回文:
1. 索引计算错误
字符串索引从0开始,长度为n的字符串,最后一个字符的索引是n-1。你代码里的myString.length-a+1会导致索引越界(比如a=0时,索引为length+1,完全超出字符串范围),正确的对称索引应该是:
myString.length - 1 - a
2. 循环逻辑缺陷
每次循环都会无条件覆盖p的值——哪怕前面已经发现字符不相等,后续循环(比如比较中间字符时)会把p重新设为true,最终结果被错误覆盖。正确逻辑应该是:
- 初始化
p为true - 一旦发现任意一对字符不相等,立刻将
p设为false并终止循环(无需继续比较剩余字符)
修正后的代码示例
p = true for a in 0...(myString.length / 2) do if myString[a] != myString[myString.length - 1 - a] p = false break end end p
或者用更简洁的Ruby风格写法直接判断:
myString == myString.reverse
内容的提问来源于stack exchange,提问作者dromologue
相关产品推荐
相关产品推荐

