其实也比较简单
主要是学会去判断回文串
同时,题目说最多可以删除一个字母,意思是去比较start+1:end和start:end-1的字符串是不是回文串,需单独弄一个函数
其次,需要区分:sc.next()和sc.nextLine()的区别,在eclipse上比较就好
next()遇到空格就结束
nextLine()只有遇到换行才结束,但会吸收字符前面的空格
发现nextLine有问题,可以用next()来试一下,这个题就是
代码:
```
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String [] s=new String[n];
for(int i=0;i<n;i++){
s[i]=sc.next();
}
int [] res=new int[n];
for(int i=0;i<n;i++){
res[i]=1000;
}
for(int i=0;i<n;i++){
int start=0;
int end=s[i].length()-1;
while(start<end){
if(s[i].charAt(start)==s[i].charAt(end)){
start++;
end--;
}else{
if(panduan(start,end-1,s[i])==true){
res[i]=end;
break;
}
if(panduan(start+1,end,s[i])==true){
res[i]=start;
break;
}
}
}
}
for(int i=0;i<n;i++){
if(res[i]==1000){
System.out.println(-1);
}else{
System.out.println(res[i]);
}
}
}
public static boolean panduan(int left,int right,String s){
while(left<right){
if(s.charAt(left)==s.charAt(right)){
left++;
right--;
}else{
return false;
}
}
return true;
}
}
```
网友评论