美文网首页
【寒武纪】回文数索引

【寒武纪】回文数索引

作者: bangbang2 | 来源:发表于2020-11-24 19:52 被阅读0次

其实也比较简单

主要是学会去判断回文串

同时,题目说最多可以删除一个字母,意思是去比较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;

    }

}

```

相关文章

网友评论

      本文标题:【寒武纪】回文数索引

      本文链接:https://www.haomeiwen.com/subject/mtjwiktx.html