用JAVA判断以字符数组表示的字符串是否为回文

判断以字符数组表示的字符串是否为回文(左右对称的文字,如level、deed等)

这样

import java.util.Scanner;
public class HuiWenTest3 {

    public static void main(String[] args) {
        System.out.println("请输入一个字符串");
        Scanner input = new Scanner(System.in);
        String str = input.next();
        int count = 0;
        for (int i = 0; i < str.length() / 2; i++) {
        if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {
                count++;
            }
        }
        if (count == str.length() / 2) {
            System.out.println("是回文字符串");
        }else{
            System.out.println("不是回文字符串");
        }
    }
}

img

字符串的长度有没有限制呢?还是随便的长度都要判断。

简单点就首尾判断,或者使用栈来做判断

        String str = "asdfg";
        for (int i = 0 ; i < (str.length() / 2) ; i++ ){
            if (str.charAt(i) != str.charAt(str.length() - 1 - i)){
                System.out.println("not back Str");
                System.exit(0);
            }
        }
        System.out.println("back Str");

写个循环首尾判断也行
或者先用字符串截取,变成等长的两段(如果是奇数就丢弃正中间的字符),取反,然后判断字符串是否相等

private boolean isBack(char[] cs){
        if(Objects.isNull(cs) || cs.length == 0)
            return true;
        for(int i = 0, j= cs.length-1; i < j; i++,j--){
            if(cs[i]!=cs[j])
                return false;
        }
        return true;
    }