每日编程题 :统计回文
链接:
https://www.nowcoder.com/practice/9d1559511b3849deaa71b576fa7009dc?tpId=85&&tqId=29
842&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking
【题目解析】:
首先以后面对这种题目描述比较长的题,不要害怕,它里面的大部分描述都只是为题做铺垫,所以读题时抓
住重点。
什么是回文字符串,题目里面说就是一个正读和反读都一样的字符串 ,回文串也就是前后对称的字符串。本
题是判断是否是回文串的变形题。字符串本身不一定是回文,把第二个字符串插入进去看是否是回文。
【解题思路】:
本题使用暴力求解方式计算即可,遍历
str1
,将
str2 insert
进入
str1
的每个位置,判断是否是回文,这里注意
的是,判断回文的时候,直接将字符串逆置,看是否相同就好了。是就
++count
;需要注意的是这里不能
str1.insert(i, str2)
,这样的话
str1
改变了,判断下一个位置就不对了。所以每次使用
str1
重新给一个
str,然后str.insert(i, str2)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
int len = str1.length();
int n = 0;
for (int i = 0; i <= len; i++) {
// 将字符串2插入到字符串1的每个位置,再判断是否是回文
StringBuffer str = new StringBuffer(str1);
str.insert(i, str2);
//注意这里,不能直接StringBuilder str5 = str.reverse();
//因为这样str本身又变了。
StringBuilder tmp = new StringBuilder(str);
StringBuilder str5 = tmp.reverse();
if (str.toString().equals(str5.toString())) {
n++;
}
}
System.out.println(n);
}
}
posted on
浙公网安备 33010602011771号