检查回文字符串

检查回文字符串

回文是一个词、短语、数字或其他单元序列,可以在任何方向上以相同的方式读取。

为了检查一个单词是否是回文,我得到单词的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;
    }}


手掌心
浏览 567回答 3
3回答

人到中年有点甜

为什么不只是:public&nbsp;static&nbsp;boolean&nbsp;istPalindrom(char[]&nbsp;word){ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i1&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i2&nbsp;=&nbsp;word.length&nbsp;-&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i2&nbsp;>&nbsp;i1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(word[i1]&nbsp;!=&nbsp;word[i2])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++i1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--i2; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;}例子:输入是“andna”。I1为0,i2为4。我们将比较第一个循环迭代word[0]和word[4]..它们是相等的,所以我们增加i1(现在是1)和减少i2(现在是3)。所以我们比较n,它们是相等的,所以我们增加i1(现在是2)和减少i2(它是2)。现在i1和i2是相等的(它们都是2),所以while循环的条件不再为true,所以循环终止,我们返回true。

一只萌萌小番薯

您可以通过将字符串与其本身相反的情况进行比较来检查字符串是否为回文:public static boolean isPalindrome(String str) {     return str.equals(new StringBuilder(str).reverse().toString());}或者对于早于1.5的Java版本,public static boolean isPalindrome(String str) {     return str.equals(new StringBuffer().append(str).reverse().toString());}

蝴蝶刀刀

一个简洁的版本,它不涉及(低效率)初始化一组对象:boolean&nbsp;isPalindrome(String&nbsp;str)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n&nbsp;=&nbsp;str.length(); &nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;n/2;&nbsp;i++&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str.charAt(i)&nbsp;!=&nbsp;str.charAt(n-i-1))&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java