Java编程题:增加一个字符,判断其是否为回文串
回文串
给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO).
输入
coco
输出
YES
如果长度为n的字符串添加一个字符能成为回文串,那么删除一个字符也能成为回文,因为这个两个字符是对称的位置。
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String str = sc.nextLine();
char[] chas = str.toCharArray();
boolean flag = false;
for (int i=0; i<chas.length; ++i){
//复制
String str1 = String.copyValueOf(chas);
char[] chas1 = str1.toCharArray();
chas1[i] = ' ';
//每次删除一个,
//对char中的字符逐个删除,直到出现回文串为止
String s = String.valueOf(chas1).replaceAll(" ", "");
if (isPa(s)){
flag = true;
}
}
if (flag){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
//判断是否是回文串
public static boolean isPa(String s) {
return new StringBuilder(s).reverse().toString().equals(s);
}
}
这里用到了 String.valueOf(chas1).replaceAll(" ", "")
进行删除,以及回文串的快速判断new StringBuilder(s).reverse().toString().equals(s)
。
来源:牛客网