一尘不染

Java 检查回文字符串

java

回文是一个词,短语,数字或其他单位序列,可以读取相同的方式在任何方向。 为了检查一个单词是否是回文,我得到了这个单词的char数组并比较了这些字符。我试过了,看起来很管用。但是我想知道这是对的还是有什么需要改进的地方。
这是我的代码:

public class Aufg1 {
    public static void main(String[] args) {
        String wort = "reliefpfpfeiller";
        char[] warray = wort.toCharArray(); 
        System.out.println(istPalindrom(warray));       
    }

    public static boolean istPalindrom(char[] wort){
        boolean palindrom = false;
        if(wort.length%2 == 0){
            for(int i = 0; i < wort.length/2-1; i++){
                if(wort[i] != wort[wort.length-i-1]){
                    return false;
                }else{
                    palindrom = true;
                }
            }
        }else{
            for(int i = 0; i < (wort.length-1)/2-1; i++){
                if(wort[i] != wort[wort.length-i-1]){
                    return false;
                }else{
                    palindrom = true;
                }
            }
        }
        return palindrom;
    }
}

阅读 379

收藏
2020-02-28

共1个答案

一尘不染

为什么不只是:

public static boolean istPalindrom(char[] word){
    int i1 = 0;
    int i2 = word.length - 1;
    while (i2 > i1) {
        if (word[i1] != word[i2]) {
            return false;
        }
        ++i1;
        --i2;
    }
    return true;
}

例:

输入为“ andna”。
i1将为0,i2将为4。

第一次循环迭代,我们将比较word[0]word[4]。它们相等,因此我们将i1递增(现在为1),然后将i2递减(现在为3)。
因此,我们然后比较n。它们相等,因此我们将i1递增(现在为2),将i2递减(现在为2)。
现在i1和i2相等(它们都为2),因此while循环的条件不再成立,因此该循环终止并返回true。

2020-02-28