回文是一个词,短语,数字或其他单位序列,可以读取相同的方式在任何方向。 为了检查一个单词是否是回文,我得到了这个单词的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; } }
为什么不只是:
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。
word[0]
word[4]