问题描述:
“回文串"是一个正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。
例如:
A= "aba",
B="b",
这里有4种把B插入A的办法:
*在A的第一个字母之前:
"baba"不是回文 *
在第一个字母'a之后:
"abba"是回文
分析:
1.在已有字符串A上建一个新的字符串str(利用StringBuilder),利用StringBuilder的insert方法对新建的str字符串进行插入,插入的位置从0到A(包括A),每次重新插入后要判断他是否为回文结构。
2.判断回文结构:利用循环遍历(只需要遍历str.length/2次即可),判断当前第i个数和第str.length-1-i个数是否相等,如果相等则继续循环,否则就不是回文结构,直接返回false。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String A = sc.nextLine();
String B = sc.nextLine();
System.out.println(method(A,B));
}
public static int method(String A,String B){
int count = 0;
//建立新的字符串
for(int i = 0; i<= A.length();i++){
StringBuilder str = new StringBuilder(A);
str.insert(i,B);
if(isHuiwen(str.toString())){
count ++ ;
}
}
return count;
}
//判断是否为回文
public static boolean isHuiwen(String str){
char[] a = new char[str.length()];
a = str.toCharArray();
for(int i = 0;i<a.length;i++){
if(a[i] != a[a.length-1-i]){
return false;
}
}
return true;
}
}