比如,字符串A是 “qwq” , 字符串B是“w” ,那么应该有两种插法使得新字符串是回文结构,这两个字符串将通过控制台分两次输入。
下面是具体代码实现:
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: Y
* Date: 2019-06-30
* Time: 19:25
*/
public class Main {
private static boolean isSame(String a) {
StringBuilder s = new StringBuilder(a);
return a.equals(s.reverse().toString());
}
private static boolean isElementSame(String s) {
char[] c = s.toCharArray();
int i = 0;
while (i <= s.length() - 1) {
if (c[i] == c[0]) {
i++;
} else {
return false;
}
}
return true;
}
public static int numOfIsSameAfterInsert(String a, String b) {
if (a == null && b != null) {
return 1;
} else if (a.length() == 0 && b.length() != 0) {
return 1;
}
else if (a.length()!=0&&b.length()==0){
return -1;
}else if (a != null && b != null) {
int tmp = 0;
for (int i = 0; i < a.length(); i++) {
StringBuilder s = new StringBuilder(a);
s.insert(i, b);
String s1 = s.toString();
if (isElementSame(s1)) {
return a.length() + 1;
}
if (isSame(s1)) {
tmp++;
}
}
return tmp;
} else return 0;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
String b = scanner.nextLine();
System.out.println(numOfIsSameAfterInsert(a, b));
}
}
下面是运行结果:
该代码还有少许缺陷,望指出。