蓝桥杯——查找最长对称子字串
之前自己在做一题算法题的时候遇到过一个题目,大概意思就是说给定一个字符串,要求查出字符串里边最长的子对称字符串,当时很懵逼。。。
最终也没能做出来,看了一下网上的题解,,不过还是忘了。
事实证明,上帝给你关上一扇门封死一扇窗,必定还会给你留一个透光的洞。这次又遇到了找对称字符串的题目,不过是代码填空题。嘿嘿记录一波
首先是第一种格式 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来做的。
菜鸟的进阶路程,每天都进步一点点,加油ヾ(◍°∇°◍)ノ゙