判断以字符数组表示的字符串是否为回文(左右对称的文字,如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("不是回文字符串");
}
}
}
字符串的长度有没有限制呢?还是随便的长度都要判断。
简单点就首尾判断,或者使用栈来做判断
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;
}