我该如何写一个回文检查?

时间:2013-12-27 02:55:35

标签: ruby

我目前正在学习一些程序来学习Ruby。我一直在玩一个回文程序,但无论输入(回文)我最终都在else

以下是我一直在尝试的一些代码:

print "enter a string:\n"
string = gets
if string.reverse == string 
  print "it's a palindrome"
else 
  print "not a palindrome.\n"
end

非常感谢任何帮助/建议。

3 个答案:

答案 0 :(得分:1)

不会从字符串中删除换行符。试试这段代码:

print "enter a string:\n"
string = gets.chomp
    if string.reverse == string 
        print "it's a palindrome"
    else 
        print "not a palindrome.\n"
    end

以下是一些解释:

>> string = gets
racecar # input string
=> "racecar\n"
>> "racecar\n" == "racecar\n".reverse # "racecar\n" is not a palindrome with newline character
=> false
>> string = gets.chomp # chomp method deletes newline character
racecar
=> "racecar"
>> "racecar" == "racecar".reverse # "racecar" without a newline character is a palindrome
=> true

答案 1 :(得分:1)

了解Ruby的puts是如何工作的:它就像print,只是更聪明。

如果字符串以"\n"结尾,则按原样打印。如果它不以"\n"结尾,则会打印该行并添加"\n"。无论哪种方式,您都可以保证添加新行。

知道这一点,请考虑一下:

puts "enter a string:"
string = gets
if string.reverse == string 
  puts "it's a palindrome"
else 
  puts "not a palindrome."
end

因此,不需要在字符串中添加新行。 puts是在Ruby中输出文件和控制台的行的标准方法。

答案 2 :(得分:1)

以下陈述如果是回文,则返回true,否则返回false:

string == string.reverse