Java 颠倒句子中的单词

Java 颠倒句子中的单词,java,palindrome,Java,Palindrome,我能够检查我输入的单词是否是回文。但我如何让它检查整个句子呢。比如:一个男人,一个计划,一只猫,一只火腿,一头牦牛,一个山药,一顶帽子,一条运河 这是我的回文: 输出: 输入一个句子:一个男人,一个计划,一只猫,一个火腿,一只牦牛,一个山药,一顶帽子,一条运河 这句话不是回文。 //这不应该也是回文吗?这就是我想说的。我想输入一个完整的句子 但是,如果我只说一个字: 输入一句话:abccba 这句话是回文。您的代码以 String inputWord = sentence.toLowerCase

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

这是我的回文:

输出:

输入一个句子:一个男人,一个计划,一只猫,一个火腿,一只牦牛,一个山药,一顶帽子,一条运河

这句话不是回文。
//这不应该也是回文吗?这就是我想说的。我想输入一个完整的句子

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

输入一句话:abccba


这句话是回文。

您的代码以

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

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

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

既然你已经有了一种检查回文的方法,只需再添加几个过滤器来删除空格,删除所有标点符号,那么它就可以根据你的需要适合一个句子


建议使用正则表达式来实现这一点,请参阅

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

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

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

我没有检查这是否有空格,并且假设regex也会处理空格。

用这种方式调用您的
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");
}
你的问题解决了。试着这样做:

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");
}

您当前的代码有什么问题?在你的循环中,你为什么不
句子.length()
?什么都没有!我只是想知道我如何输入一个像上面这样的句子,让它判断它是否是回文。让我更新一下上面的内容,你就会明白我的意思了为什么你要使用堆栈和队列来解决这个问题?我是被要求这样做的。那么,我是否可以将它们全部包括在内?包括在什么中?你的例句只有在不使用逗号和连字符的情况下才是回文。你知道回文是什么吗?你理解你给我们的代码吗,还是你盲目地从某个地方复制它而不了解它的功能?是的,只是碰巧有一个反向字符串类,所以队列中还有几行,我基本上得到了一个回文。我想做一个我可以把它一分为二的,但我意识到我需要做队列堆栈。是的,仍然说不是回文。我改为与您的类似:
String inputWord=句子.toLowerCase().replaceAll(“[^A-Za-z]+”,”)
然后我调用
isPalindrome(inputString)
实际上,你能调试你的代码并告诉我们你得到的输入字符串是什么,以及从哪里得出的结论是输入不是回文吗?