有字符串A和字符串B,若将字符串B插入字符串A使产生的字符串是一个回文串,现统计有多少种插入办法可以使新串是一个回文串。
例如: A = “aba”,B = “b”。这里有4种把B插入A的办法:
- 在A的第一个字母之前: “baba” 不是回文
- 在第一个字母‘a’之后: “abba” 是回文
- 在字母‘b’之后: “abba” 是回文
- 在第二个字母’a’之后 “abab” 不是回文
所以满足条件的答案为2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String A = in.nextLine();
String B = in.nextLine();
// 计数器
int count = 0;
// 循环将插入到 A 的不同位置
for (int i = 0; i <= A.length(); i++) {
// 先将 A 转成 StringBuffer 进行 insert 操作
StringBuffer newA = new StringBuffer(A);
newA.insert(i, B);
// 判断 newA 为回文串 count++
if(isPalindromic(newA.toString())) {
count++;
}
}
System.out.print(count);
}
// 判断是否为回文数
private static boolean isPalindromic (String str) {
int i = 0;
int j = str.length() - 1;
// 两个指针
// 一个从前向后 一个从后向前
// 遍历char 发现不同返回 false
while (i < j) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
i++;
j--;
}
// 遍历结束返回 true
return true;
}
}
链接:https://www.nowcoder.com/questionTerminal/9d1559511b3849deaa71b576fa7009dc
来源:牛客网
7413

被折叠的 条评论
为什么被折叠?



