【发布时间】:2018-05-05 07:52:55
【问题描述】:
我正在尝试检查一个句子是否前后相同或“句子回文”。句子“你可以关笼燕子,不是吗,但你不能吞笼子,可以吗?”应该返回 (True) 作为回文。忽略所有不是字母的内容。
我的问题:不确定如何具体比较单词。这目前适用于检查它们是否是回文的单词,但我需要弄清楚要更改什么来比较每个单词。
public static boolean isWordPalindrome(String input) {
Deque<Character> q = new LinkedList<>( );
Deque<Character> q2 = new LinkedList<>( );
Character letter; // One character from the input string
int mismatches = 0; // Number of spots that mismatched
int i; // Index for the input string
int x;
for (i = 0; i < input.length( ); i++)
{
letter = input.charAt(i); // read next character in the string
if (letter.toString().equals(',') || letter.toString().equals('"') || letter.toString().equals('?') || letter.toString().equals('!') || letter.toString().equals('.') || letter.toString().equals(' ')) {
//throwaway.add(letter); //ignore above chars and put in throwaway stack
}
if (Character.isLetter(letter)) // if letter put into q's
{
q.add(letter);
q2.addFirst(letter);
}
} // end of for loop
System.out.println("q: " + q);
System.out.println("q2:" + q2);
while (!q.isEmpty( ))
{
if (!Objects.equals(q.remove(), q2.remove()))
mismatches++;
}
【问题讨论】:
标签: java palindrome