我想知道如何修改以下方法以忽略某个字母,并在检查字符串是否为回文时将其作为通配符...
示例:“wows”,在这种情况下,该方法应返回false但
“pat”,'t'可以是通配符(被视为p),因此它返回true
“job”,b又可以是通配符并被视为j,因此方法返回true。
这是我到目前为止,我有一个单独的方法忽略特殊字符和空格,所以在这篇文章中不需要考虑。
private static boolean checkPalindrome2(String word) {
if(word.length() < 2) {
return true;
}
char first = word.charAt(0);
char last = word.charAt(word.length()-1);
if(first != last) {
return false;
}
else {
return checkPalindrome2(word.substring(1,word.length()-1));
}
}
这是我的测试类,
public class testPalindromes {
public static void main(String[] args) {
//if (Palindromes.isPalindrome("a") == true) {
// System.out.println("true");
//} else {
// System.out.println("false");
//}
// block above is the same as this
// isPalindrome already returns true or false,
// and true and false can be printed as strings
System.out.println(isPalindrome("a"));
if (Palindromes.isPalindrome("cat") == true) {
System.out.println("true");
} else {
System.out.println("false");
}
if (Palindromes.isPalindrome("w o w") == true) {
System.out.println("true");
} else {
System.out.println("false");
}
if (Palindromes.isPalindrome(" a ") == true) {
System.out.println("true");
} else {
System.out.println("false");
}
if (Palindromes.isPalindrome("mom!") == true) {
System.out.println("true");
if (Palindromes.isPalindrome2("cat")==true){
System.out.print("true");
} else {
System.out.println("false");
}
}
}
}
isPalindromes2是一个调用上面的checkPalindrome2方法的方法,我的测试类(word cat)中的最后一个案例应该返回true,因为t将是通配符(如上所述再次使用通配符,替换为c制作cat,cac,是一个回文)
提前感谢所有帮助/输入!!!! ps,我故意实现了一个递归方法。
答案 0 :(得分:2)
只需在基础案例中添加额外条件:
// both first and last have to NOT be the special character
// and first has to not equal last for this to return false
if(first != special && last != special && first != last)
return false;
else
return checkPalindrome(word.substring(1,word.length()-1));