【发布时间】:2020-02-17 15:04:24
【问题描述】:
我正在解决来自 HackerRank 的palindrome index 问题,如下所述。
一些单挑会继续进行。谢谢!
这是我的代码:
# Complete the palindromeIndex function below.
def palindromeIndex(s)
# slen = s.length
splt = s.split('')
n = s.reverse
nsplt = n.split('')
if n == s
return -1
elsif n != s
splt.each do |p|
if nsplt[p] != splt[p]
return p
end
end
else
return -1
end
end
在第一行中,我首先拆分给定的字符串及其各自的反向形式。然后我试图将原始字符串与反转字符串进行比较。如果它们相等,我的程序应该返回-1。如果不是,我应该遍历最初拆分的字符串并检查索引是否存在差异,并返回与主字符串不同的字符位置。
到目前为止,我不确定我是否正确,但我在第一次尝试时也遇到了错误。
solution.rb:18:in `block in palindromeIndex': no implicit conversion of String into Integer (TypeError)
from solution.rb:17:in `each'
from solution.rb:17:in `palindromeIndex'
from solution.rb:34:in `block in <main>'
from solution.rb:31:in `times'
from solution.rb:31:in `<main>'
我这里有什么问题吗?
【问题讨论】:
-
您最后的
else内容永远不会被调用。n等于s或不等于s。由于这两个表达式都被检查代码永远不会到达最后一个else。我怀疑您想将该代码移至splt.each循环之后。return -1将在循环结束时被调用,并且在循环过程中没有返回。
标签: ruby palindrome