A 回文是一个单词、短语、数字或其他单位序列,可以在任一方向以相同的方式阅读。
为了检查一个单词是否是回文,我获取该单词的字符数组并比较字符。我测试了它,它似乎有效。但我想知道这是否正确或者是否有需要改进的地方。
这是我的代码:
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;
}
Example:
输入是“andna”。
i1 将为 0,i2 将为 4。
我们将比较第一个循环迭代word[0]
and word[4]
。它们相等,因此我们增加 i1(现在为 1)并减少 i2(现在为 3)。
所以我们然后比较n。它们相等,因此我们增加 i1(现在是 2)并减少 i2(现在是 2)。
现在 i1 和 i2 相等(它们都是 2),因此 while 循环的条件不再为 true,因此循环终止并且我们返回 true。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)