为了账号安全,请及时绑定邮箱和手机立即绑定

检查回文字符串

检查回文字符串

手掌心 2019-06-23 17:14:48
检查回文字符串A 回文是一个词、短语、数字或其他单元序列,可以在任何方向上以相同的方式读取。为了检查一个单词是否是回文,我得到单词的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;     }}
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

为什么不只是:

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循环的条件不再为true,所以循环终止,我们返回true。


查看完整回答
反对 回复 2019-06-23
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您可以通过将字符串与其本身相反的情况进行比较来检查字符串是否为回文:

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());}
查看完整回答
反对 回复 2019-06-23
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

一个简洁的版本,它不涉及(低效率)初始化一组对象:

boolean isPalindrome(String str) {    
    int n = str.length();
    for( int i = 0; i < n/2; i++ )
        if (str.charAt(i) != str.charAt(n-i-1)) return false;
    return true;    }


查看完整回答
反对 回复 2019-06-23
  • 3 回答
  • 0 关注
  • 566 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信