java - 检查回文字符串

标签 java arrays string char palindrome

一个 palindrome是一个单词、短语、数字或其他单位序列,可以在任一方向上以相同的方式阅读。

为了检查一个词是否是回文,我得到了这个词的 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 循环的条件不再为真,所以循环终止,我们返回真。

关于java - 检查回文字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4138827/

相关文章:

ios - Swift:无法从字符串转换为 int(使用 slider 标签)

ios - 如何在 Swift 中使用 (?) 和 (!)

excel - 无法使用Excel公式获取大字符串的倒数第二部分

java - 使用 perf 进行分析时,JMH 给出 <not counted> 值

c - 在 C 函数中将指针作为数组传递?

arrays - 如何减少数组中移动操作的数量?

php - 用php中的另一个数组值替换一个数组键

java - 如何从 Google Cloud Platform Java Flexible Environment 下载应用程序

java - Netbeans 表示 observablearrayList 的 FXML 文件中不存在类,但它确实存在

java - 读取带有换行符的转义字符的java文件