2014-05-10 1 views
0

Ruby를 배우고 있습니다. 현재 Ruby Monk의 palindrome method 작성자입니다.RubyMonk, Palindrome

기본적으로 문자열이 실제로 회문 일 경우 true를 반환하는 메서드를 작성합니다.

이것은 내 코드입니다.

def palindrome?(sentence) 

sentence.downcase! 


array_1 = sentence.split("") 

array_2 = sentence.reverse.split("") 

if array_1 == array_2 
    true 
else 
    false 
end 
end 

p palindrome?("NeverOddOrEven") 

각 단어 사이에 공백이없는 경우에만 작동합니다.

그래서 "Never Odd Or Even"("NeverOddOrEven"과 반대)를 선택하면 실패합니다.

어떻게 수정해야합니까?

감사합니다.

+0

put은 공간을 너무 포함해야합니다'p palindrome? ("절대 이상하거나 심지어")' – Pavan

답변

0

추가 :

:

string = 'NeverOddOrEven' 
p palindrome?(string) #=> true 
p string    #=> neveroddoreven 

가 처음 두 행을 변경,이 문제를 해결하려면 다음

sentence.gsub!/\W/, '' 

단지 sentence.downcase!

은 또한 당신의 방법은 부작용이 있음을 유의 후

sentence = sentence.downcase.gsub /\W/, '' 
+0

Worked! 고마워. 나는 \ W가 공백이고 공백 대신 공백을 사용한다고 가정한다. (나는 가난하다고 말한 것을 깨닫는다.) – user2085143

+0

'\ W'는'\ w'의 반대이며'[a-zA-Z0-9_]'입니다. 가정하지 말고 Regexp 문서를 읽는 습관을 가지십시오. 버그가 있다고 가정합니다. –

+0

@ user2085143 - 한 번 더, 당신은 배열을 사용할 필요가 없습니다, 문자열 자체 역 방법이 있습니다. :) – BroiSatse