java - 忽略 isPalindrome() 方法中的字母 - Java

标签 java oop palindrome

我想知道如何修改以下方法以在检查字符串是否为回文时忽略某个字母并将其作为通配符...

示例:“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 方法的方法,我的测试类中的最后一个案例(单词 cat)应该返回 true,因为 t 将是通配符字母(通配符再次如上所述,替换为 c 制作 cat,cac 其中是回文)

提前感谢所有帮助/输入!!!! ps,我特意实现了递归方法。

最佳答案

只需在您的基本情况中添加额外的条件即可:

// 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));

关于java - 忽略 isPalindrome() 方法中的字母 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736733/

相关文章:

java - 在 2 个输入文件上使用方法 - 第二个是多次打印 - Java

c# - 如何防止某些方法的继承?

java - 字符串回文的 LinkedList 的组合字符串?

java - 是否可以创建具有空区域的 AWS s3 存储桶

java - 我可以将 0 移到开头吗?

java - 改造回调用于根据参数执行其他操作

PHP OOP PDO 错误显示

php - 为什么不能访问一个类的属性,但是可以访问同一个类的方法?

java - 来自 Project euler 的问题 4 的改进解决方案

JAVA:如何将新元素添加到字符串中,将所有其他元素推回原处?