首页 > 代码库 > 【蓝桥杯】最大镜像子串
【蓝桥杯】最大镜像子串
串“abcba”以字母“c”为中心左右对称;串“abba” 是另一种模式的左右对称。这两种情况我们都称这个串是镜像串。特别地,只含有1个字母的串,可以看成是第一种模式的镜像串。
一个串可以含有许多镜像子串。我们的目标是求一个串的最大镜像子串(最长的镜像子串),如果有多个最大镜像子串,对称中心靠左的优先选中。例如:“abcdeefghhgfeiieje444k444lmn”的最大镜像子串是:“efghhgfe”
public class Test提取子串 { public static void main(String[] args) { System.out.println(getMaxMirrorString("abcdeefghhgfeiieje444k444lmn")); } public static String getMaxMirrorString(String s) { String max_s = ""; // 所求的最大对称子串 for (int i = 0; i < s.length(); i++) { // 第一种对称模式 int step = 1; try { for (;;) { if (s.charAt(i - step) != s.charAt(i + step)) break; step++; } } catch (Exception e) { } String s1 = s.substring(i - step + 1, i + step); // 填空1 // 第二种对称模式 step = 0; try { for (;;) { if (s.charAt(i - step) != s.charAt(i + step + 1)) break; // 填空2 step++; } } catch (Exception e) { } String s2 = s.substring(i - step + 1, i + step + 1); if (s1.length() > max_s.length()) max_s = s1; if (s2.length() > max_s.length()) max_s = s2; } return max_s; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。