给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO).
示例1
输入
coco
输出
YES
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str = sc.next();
char[] chs = str.toCharArray();
System.out.println(sovle(chs));
}
sc.close();
}
/**
* 使用双指针实现
*
* @param chs
* @return
*/
private static String sovle(char[] chs) {
int start = 0;
int end = chs.length - 1;
String res = "YES";
while (start <= end) {
if (chs[start] == chs[end]) {
++start;
--end;
// 相当于删除后面的元素(在前面插入一个元素)
} else if (chs[start] == chs[end - 1]) {
--end;
} else if (chs[start + 1] == chs[end]) {
++start;
} else {
res = "NO";
// 注意
break;
}
}
return res;
}
}
for (int i = 0; i < strlen(s); i++) {
strcpy(tmp, s);
for (int j = i; j < strlen(s); j++)
tmp[j] = tmp[j+1]; // 删掉tmp[j],把后面的向前移动
if (tmp is 回文串)
return true;
}