给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO)
输入例子:
coco
输出例子:
YES
既然能通过增加一个字符变成回文串,那一定也可以通过删除一个字符变成回文串。用一个循环,每次循环依次删掉一个字符,然后检查新串是否是回文串,会简单方便许多。
import java.util.Scanner;
import java.lang.*;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String str=in.next();
char[] c=str.toCharArray();
String sb=null;
boolean flag=false;
for(int i=0;i<str.length();i++){
if(i==0){
sb=str.substring(1,str.length());
}
else if(i==str.length()-1){
sb=str.substring(0,str.length()-1);
}
else{
sb=str.substring(0,i-1)+str.substring(i+1,str.length());
}
flag=isHuiwen(sb);
if(flag==true){
System.out.println("YES");
break;
}
}
if(flag==false){
System.out.println("NO");
}
}
}
private static boolean isHuiwen(String sb) {
// TODO Auto-generated method stub
char[] c=sb.toCharArray();
int len=sb.length();
int begin=0;
int end=len-1;
boolean flag=false;
while(begin<=end&&c[begin]==c[end]){
begin++;
end--;
}
if(begin>=end){
flag=true;
}
return flag;
}
}