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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

首先是第一种格式 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来做的。

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

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄