首页 > 解决方案 > 检查字符串在java中是否只有一个回文字符不匹配

问题描述

我必须编写一个布尔函数,它接受一个字符串并检查一个字符串在java中是否是回文。

这是我的代码

    static boolean isPalindrome(String input) 
{ 
    int i = 0;
    last = input.length() - 1; 
    while (i < last) { 
        if (input.charAt(i) != input.charAt(last)) 
            return false; 
        i++; 
        last--; 
    } 
    return true; 
}

我想将此部分添加到我的代码中,但我坚持认为如果只有一个字符不匹配,我应该将其视为有效回文。

样本结果:

“book” ​-> true
“refer” ​-> true
“” ​​-> true

标签: javapalindrome

解决方案


当两个字符不同时,不是立即返回,而是false计算有多少对字符不同:

static boolean isPalindrome(String input)
{
    int i = 0;
    int last = input.length() - 1;
    int differentCount = 0;
    while (i < last) {
        if (input.charAt(i) != input.charAt(last)) {
            differentCount++;
            // only return false if more than one character is different
            if (differentCount > 1) {
                return false;
            }
        }
        i++;
        last--;
    }
    return true;
}

推荐阅读