【寒武纪】回文数索引


其实也比较简单

主要是学会去判断回文串

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

    }


}

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容