0

我能够检查我输入的单词是否是回文。但是我如何让它检查整个句子。比如:一个人,一个计划,一只猫,一根火腿,一头牦牛,一根山药,一顶帽子,一条巴拿马运河!

这是我的回文:

输出:

输入一句话:一个人,一个计划,一只猫,一条火腿,一头牦牛,一条山药,一顶帽子,一条运河——巴拿马!

这句话不是回文。
//这不应该也是回文吗?所以这就是我想要达到的目的。我想输入一个完整的句子。

但是,如果我只说一个字:

输入一句话:abccba

这句话是回文。

4

5 回答 5

1

检查回文的最简单方法是将整个字符串反转并将其与输入字符串进行比较。

由于您已经有了检查回文的方法,只需添加更多过滤器以删除空格,删除所有标点符号,然后它会适合您需要的句子。

建议使用 Regex 来实现,请参阅如何从 Java 中的输入文本中删除标点符号?

于 2013-11-10T13:04:47.113 回答
0

您必须删除所有无关紧要的符号 - 空格、引号、任何标点符号。也将它们投射到Lower() 或toUpper()。虽然,我明白为什么这可能是一个有趣的实验,但它根本不是检查回文的最有效方法。您不需要检查每个符号,只需要检查一半 :)

于 2013-11-10T13:08:53.773 回答
0

这样称呼你isPalindrome

isPalindrome(sentence.replaceAll("[^A-Za-z]+", "").toLowerCase())

你的问题就解决了。试试这种方式:

String sentence = "A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal-Panama!"
if (isPalindrome(sentence.replaceAll("[^A-Za-z]+", "").toLowerCase()))
{
    System.out.println("It works");
}
else
{
    System.out.println("It does not work");
}
于 2013-11-10T14:01:15.197 回答
0

你的代码从做开始

String inputWord = sentence.toLowerCase().replaceAll("\\s", "");

这将删除句子中的所有空白字符。但它不会删除逗号、连字符和其他要忽略的字符。

于 2013-11-10T13:02:35.373 回答
0

您可以删除所有不需要的字符,例如

  str = str.replace(\W, "");
// W for [^[a-zA-Z_0-9]]

我还没有检查这个空格,并假设正则表达式也会处理空格。

于 2013-11-10T13:37:44.360 回答