package com.ag;
import java.util.*;
/**
*判断输入的字符串是否对称
* eg:
* input:1234321或123321或abcba或abba out: true
* input:1234567或123123或abcab或abab out: false
*/
public class StrSymmetrical {
/**
* 思路:字符串前半部分(left)与后半部分(right)翻转之后比较是否相等
* @param str
* @return
*/
public static boolean isStrSymmetrical(String str){
if(str==null||str.length()<=1){
return false;
}
//1.获取字符串前后两部分
int leftIndex=str.length()/2;
String left=str.substring(0,leftIndex);
String right;
if(str.length()%2==0){
right=str.substring(leftIndex,str.length());
}else{
right=str.substring(leftIndex+1,str.length());
}
//2.翻转字符串后半部分
StringBuilder sb=new StringBuilder(right);
String reverseRight=sb.reverse().toString();
//3.left前半部分与right后半部分翻转字符串比较
if(left.equals(reverseRight)){
return true;
}
return false;
}
/**
* 思路:原始字符串str与newStr(str字符串翻转之后)比较是否相等
* @param str
* @return
*/
public static boolean isStrSymmetrical2(String str) {
if (str == null || str.length() <= 1) {
return false;
}
StringBuilder sb=new StringBuilder(str);
String newStr=sb.reverse().toString();
if(str.equals(newStr)){
return true;
}
return false;
}
public static void main(String[] args) {
//方法1
System.out.println("1234321:"+isStrSymmetrical("1234321"));
System.out.println("123321:"+isStrSymmetrical("123321"));
System.out.println("abcba:"+isStrSymmetrical("abcba"));
System.out.println("1234567:"+isStrSymmetrical("1234567"));
System.out.println("123123:"+isStrSymmetrical("123123"));
System.out.println("abcab:"+isStrSymmetrical("abcab"));
System.out.println("abab:"+isStrSymmetrical("abab"));
System.out.println("a :"+isStrSymmetrical("a"));
System.out.println("=======================================");
//方法2
System.out.println("1234321:"+isStrSymmetrical2("1234321"));
System.out.println("123321:"+isStrSymmetrical2("123321"));
System.out.println("abcba:"+isStrSymmetrical2("abcba"));
System.out.println("1234567:"+isStrSymmetrical2("1234567"));
System.out.println("123123:"+isStrSymmetrical2("123123"));
System.out.println("abcab:"+isStrSymmetrical2("abcab"));
System.out.println("abab:"+isStrSymmetrical2("abab"));
System.out.println("a :"+isStrSymmetrical2("a"));
System.out.println("isStrSymmetrical2:"+isStrSymmetrical2("1234211"));
}
}
06-24
2745