我正在尝试构建一个回文。我想我的 if 语句中的条件循环太多了,我可能会过度考虑解决方案。我在尝试更新 while 循环以检查它是否已经通过并检查字符串的每个字符的相等性并更新它时遇到了问题。有人能指出我正确的方向吗,以及我如何用代码做更干净的工作?
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.isPalindrome("saippuakivikauppias");
main.isPalindrome("Hello World");
main.isPalindrome("Was it a car or a cat I saw");
}
private boolean isPalindrome(String word) {
int first = word.charAt(0);
int last = word.charAt(word.length() - 1);
if(word.length() <= 1) {
return true;
} else if(word.trim().length() > 1) {
if(Character.isLetter(first) && Character.isLetter(last)) {
while(first == last) {
first++;
last--;
//if loop to check if the while loop as gone through the entire string?
//update?
}
} else {
return false;
}
}
return false;
}
}
答案 0 :(得分:3)
你真的想得太多了 - 你应该对你的问题有更基本的思考:
回文是向后和向前读取相同的字符串 -> 创建 word
的反向并与 word
进行比较
public static boolean isPalindrome(String word){
StringBuilder reverse = new StringBuilder(word).reverse();
return word.equals(reverse.toString());
}
您甚至可以在一行中执行此操作 - 取决于您的编码风格。