问题描述:
给定一个字符串,通过在该字符串的任意位置,添加任意的字符,判断是否是回文串。
如给定字符串“AB”,则通过添加字符可变成“ABA”。符合回文串,返回“Yes”,否则返回“No”;
实现思路:
通过在原字符串的任意位置上,添加新的字符,然后判断新字符是否是回文串。判断过程中,如果遍历到的是新加的字符,则直接跳过。即新添加的字符匹配任何字符。
JAVA实现:
private String judgeStr(String str) {
String result = "No";
int length = str.length();
String newStr = "";
boolean flag = true;
for(int i=0;i<=length;i++) {
//构建在任意位置插入任意字符的新字符串,判断新字符串是否是回文串
flag = true;
if(i==0) {
newStr = " ".concat(str);
}else if(i==length) {
newStr = str.concat(" ");
}else {
String temEndStr = str.substring(i);
String temStartStr = str.substring(0,i);
newStr = temStartStr+" "+temEndStr;
}
//(newStr.length()-1)/2 防止下标越界
for(int j=0;j<=(newStr.length()-1)/2;j++) {
//如果加的字符在整个字符串的左侧,则直接跳过
if(newStr.substring(i,i+1).equals(" ") && j==i) {
continue;
}else {
//比较左边字符和右边字符是否相同,并且如果加的字符在整个字符串的右侧
if(newStr.charAt(j)!=newStr.charAt(newStr.length()-1-j) && newStr.length()-1-j!=i) {
flag = false;
break;
}
}
}
if(flag) {
result = "Yes";
break;
}
}
return result;
}