내가 루비에서 가장 긴 회문 문제를 해결하기 위해 노력하고있어, 나는 유래에 대한 답을 발견루비 긴 회문
답변 :
문자열이 n 개의 문자가 가정하자. 먼저 전체 문자열이 회문인지 확인하십시오. 맞으면 문자열을 반환합니다. 피니! 그렇지 않다면 길이 n-1의 두 하위 문자열 중 하나가 회귀 색인인지 확인합니다. 그럴 경우 반환하십시오. 그렇지 않으면 길이가 n-2 인 하위 문자열을 검사합니다. 문자열에 적어도 하나의 문자가 포함되어 있으면 가장 긴 회문이 발견됩니다.
이return ana.join if ana
if ana
은 무엇을 의미 하는가 :
def longest_palindrome(str)
arr = str.downcase.chars
str.length.downto(1) do |n|
ana = arr.each_cons(n).detect { |b| b == b.reverse }
return ana.join if ana
end
end
puts longest_palindrome "ilikeracecar"
하지만 문제가이 줄을 인식하지 못했습니다?
왜이 기능을 사용하지 않습니까? 나는이 프로그램을 실행할 때
def longest_palindrome(str)
arr = str.downcase.chars
str.length.downto(1) do |n|
ana = arr.each_cons(n).detect { |b| b == b.reverse }
return ana.join
end
end
, 그것은 나에게
undefined method `join' for nil:NilClass (NoMethodError)
을 제공하지만 아나가 nil이 될 이유가 조건 [될 것 "만나는 첫 번째 배열을 감지 한 때 이해가 안 돼요 r ","a ","c ","e ","c ","a ","r "] 이렇게 아닐까요?