import java.util.Scanner;
/**
* <p>
* ClassName:Solution
* </p>
* <p/>
* Description:给定一个串,通过添加一个字母将其变成“回文串”
* </P>
*
* @author sunnylinner
*/
public class Solution {
final String Y = "YES";
final String N = "NO";
public String isPalindrome(String input) {
if (input == null || "".equals(input)) {
return Y;
}
int length = input.length();
//题目说明不超过10个字符,那么超过的话,直接返回NO
if (length > 10) {
return N;
}
StringBuilder sb = new StringBuilder(input);
for (int i = 0; i < length; i++) {
sb.deleteCharAt(i);
String temp = sb.toString();
if (sb.reverse().toString().equals(temp)) { //字符换个方向与原字符比较
return Y;
} else {
sb = new StringBuilder(input);
continue;
}
}
return N;
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
String input;
while (cin.hasNext()) {
input = cin.next();
System.out.println(new Solution().isPalindrome(input));
}
}
}
解题思路:既然通过添加一个字母可以变为回文串,那么通过删除与添加的字母相对位置的字符,应该亦为回文串。