在一个句子中反转单词

时间:2013-11-10 12:52:42

标签: java palindrome

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

这是我的回文:

输出:

输入一句话:男人,计划,猫,火腿,牦牛,山药,帽子,运河 - 巴拿马!

这句话不是回文 //这不应该是回文吗?所以这就是我想要的。我想输入一整句话。

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

输入一个句子:abccba

这句话是回文。

5 个答案:

答案 0 :(得分:1)

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

由于您已经有了检查回文的方法,只需添加更多过滤器以移除空间,删除所有标点,然后根据需要将其用于句子。

建议使用Regex来实现这一点,请参阅How can I remove punctuation from input text in Java?

答案 1 :(得分:0)

您的代码首先执行

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

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

答案 2 :(得分:0)

你必须删除所有无关紧要的标志 - 空格,引号,任何标点符号。 还将它们转换为Long()或toUpper()。 虽然,我可以理解为什么这可能是一个有趣的实验,但它根本不是检查回文的最佳方式。你不需要检查每个符号,只需要检查一半:)

答案 3 :(得分:0)

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

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

我没有检查过这个白色空格,并假设正则表达式也会处理空白区域。

答案 4 :(得分: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");
}