首页 > 解决方案 > 检查字符串的每个字符是否相等

问题描述

我正在尝试建立一个回文。我想我可能在 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;
    }

}

标签: java

解决方案


你真的想多了 - 你应该更基本地考虑你的问题:

回文是一个向后和向前读取相同的字符串 -> 创建一个反向word并比较word

public static boolean isPalindrome(String word){
    StringBuilder reverse = new StringBuilder(word).reverse();
    return word.equals(reverse.toString());
}

您甚至可以在一行中执行此操作(取决于您的编码风格)。


推荐阅读