蓝桥杯——查找最长对称子字串

之前自己在做一题算法题的时候遇到过一个题目,大概意思就是说给定一个字符串,要求查出字符串里边最长的子对称字符串,当时很懵逼。。。

最终也没能做出来,看了一下网上的题解,,不过还是忘了。

 事实证明,上帝给你关上一扇门封死一扇窗,必定还会给你留一个透光的洞。这次又遇到了找对称字符串的题目,不过是代码填空题。嘿嘿记录一波

首先是第一种格式 ABCBA

//第一种模式abcba
    public static String GetOne(String s)
    {
        
        String max_str="";
        for (int i = 0; i < s.length(); i++)
        {
            //定义一个步长从1开始
            int step=1;
            try
            {
                for (;;)
                {
                    //如果当前 i 的位置的左边不等于右边,则跳出循环
                    if(s.charAt(i-step)!=s.charAt(i+step))break;
                    step++;//如果两边距离 i 的位置上的字符相等,则步长加1
                }
            }
            catch(Exception e){}
            //跳出循环后,截取有头无尾
            String str=s.substring(i-step-1, i+step);
            if(str.length()>max_str.length())
                max_str=str;
        }
        return max_str;
    }

 第二种是ABBA格式

    //第二种模式abba
    public static String GetTow(String s)
    {
        
        String max_str="";
        for (int i = 0; i < s.length(); i++)
        {
            //定义一个步长从0开始
            int step=0;
            try{
                for (;;)
                {
                    //这里右边是要多加1的,因为当 setp 等于0时,不加 1 就相当于自己与自己比较无意义
                    if(s.charAt(i-step)!=s.charAt(i+step+1))break;
                    step++;
                }
            }
            catch(Exception e){}
            //跳出循环后,截取有头无尾
            String str=s.substring(i-step+1, i+step+1);
            if(str.length()>max_str.length())
                max_str=str;
        }
        return max_str;
    }
}

 两种寻找字符串中最大对称子字符的方法,用Java来做的。

菜鸟的进阶路程,每天都进步一点点,加油ヾ(◍°∇°◍)ノ゙

posted @ 2019-04-21 01:44  贼6  阅读(440)  评论(0编辑  收藏  举报