题目描述:
回文串是一个正读和反读都一样的字符串, 比如 level 或者 noon 等等就是回文串花花非常喜欢这种拥有对称美的回文串, 生日的时候她得到两个礼物分别是字符串 A 和字符串 B 现在她非常好奇有没有办法将字符串 B 插入字符串 A 使产生的字符串是一个回文串你接受花花的请求, 帮助她寻找有多少种插入办法可以使新串是一个回文串如果字符串 B 插入的位置不同就考虑为不一样的办法
例如:
A = aba,B = b 这里有 4 种把 B 插入 A 的办法:
* 在 A 的第一个字母之前: "baba" 不是回文
* 在第一个字母 a 之后: "abba" 是回文
* 在字母 b 之后: "abba" 是回文
* 在第二个字母 a 之后 "abab" 不是回文
所以满足条件的答案为 2
输入描述:
每组输入数据共两行
第一行为字符串 A
第二行为字符串 B
字符串长度均小于 100 且只包含小写字母
输出描述:
输出一个数字, 表示把字符串 B 插入字符串 A 之后构成一个回文串的方法数
示例 1
输入
aba
b
输出
2
思路:
简单的 String 操作
1 判断回文
2subString(i,j)
3StringBuilder/StringBuffer 中 insert 的用法
- import java.util.*;
- public class Tongjihuiwen {
- public static boolean huiwen(String s){
- int i = 0;
- int j = s.length()-1;
- while(i<j){
- if(s.charAt(i)!=s.charAt(j)){
- return false;
- }
- i++;
- j--;
- }
- return true;
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner sc = new Scanner(System.in);
- String str1 = sc.nextLine();
- String str2 = sc.nextLine();
- //StringBuffer sb = new StringBuffer(str1);
- //System.out.println(sb.toString());
- // if(huiwen(sb.toString())==true)System.out.println(1);
- // else {
- // System.out.println(0);
- // }
- // int count = 0;
- // for(int i = 0;i<=str1.length();i++){
- // String string = str1.substring(0,i)+str2+str1.substring(i,str1.length());
- // if(huiwen(string)==true){
- // count++;
- // }
- // }
- int count = 0;
- for(int i = 0; i <= str1.length();i++){
- StringBuilder sb = new StringBuilder(str1);
- sb.insert(i, str2);
- if(huiwen(sb.toString())){
- System.out.println(sb);
- count++;
- }
- }
- System.out.println(count);
- }
- }
来源: http://www.bubuko.com/infodetail-2525388.html