[英]Reverse words in a sentence
我能夠檢查輸入的單詞是否是回文。 但是我如何讓它檢查整個句子。 像這樣的東西:男人,計划,貓,火腿、,牛,山葯,帽子,運河巴拿馬!
這是我的回文:
輸出:
輸入一句話:男人,計划,貓,火腿,a牛,山葯,帽子,運河巴拿馬!
這句話不是回文。
//這也不應該是回文嗎? 這就是我想要達到的目的。 我想輸入一整個句子。
但是,如果我只說一個字:
輸入一個句子:abccba
這句話是回文。
檢查回文的最簡單方法是反轉整個字符串並將其與輸入字符串進行比較。
由於您已經可以檢查回文,因此只需添加幾個過濾器即可刪除空格,刪除所有標點符號,然后根據需要適合一個句子。
建議使用Regex實現此目的,請參閱如何在Java中從輸入文本中刪除標點符號?
您的代碼首先要做
String inputWord = sentence.toLowerCase().replaceAll("\\s", "");
這將從句子中刪除所有空白字符。 但這不會刪除逗號,連字符和其他要忽略的字符。
您必須刪除所有無關緊要的符號-空格,引號和任何標點符號。 還要將它們強制轉換為Lower()或toUpper()。 雖然,我知道為什么這樣做可能會很有趣,但這並不是檢查回文征兆的最有效方法。 您不需要檢查每個符號,只需檢查一半即可:)
您可以刪除所有不需要的字符,例如
str = str.replace(\W, "");
// W for [^[a-zA-Z_0-9]]
我還沒有檢查過空格,並假設正則表達式也可以處理空格。
isPalindrome
以下方式致電您的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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.