狸猫的笔试——镜像字符串(二叉树法)
2016-04-08 21:38
337 查看
输入一串字符串,获取其中最长的镜像字符串
例如
cabecbad
对与子串:abecba 除去c 剩下 abeba即为最长的镜像字符串 长度为5
算法思想:
对于每一个字符,都可以选择加入子串或者舍弃 然后判断是否是镜像字符串
例如
cabecbad
对与子串:abecba 除去c 剩下 abeba即为最长的镜像字符串 长度为5
算法思想:
对于每一个字符,都可以选择加入子串或者舍弃 然后判断是否是镜像字符串
package myWork; import java.util.ArrayList; import java.util.List; public class Mirror { private static int len = 0; public static void main(String args[]) { List<Character> chars = new ArrayList<>(); String s = "cabecbad"; mirror(s, 0, chars); System.out.println(len); } public static void mirror(String s, int index, List<Character> chars) { // 已取完字符 if (index >= s.length()) { // 判断是否是镜像 for (int i = 0; i < chars.size() / 2; i++) { if (chars.get(i) != chars.get(chars.size() - i - 1)) { return; } } if (chars.size() > len) { len = chars.size(); return; } } else if (s.length() - index + chars.size() < len) { //剪支 return; } else { List<Character> charsCopyone = new ArrayList<>(); charsCopyone.addAll(chars); mirror(s, index + 1, charsCopyone); List<Character> charsCopytwo = new ArrayList<>(); charsCopytwo.addAll(chars); charsCopytwo.add(s.charAt(index)); mirror(s, index + 1, charsCopytwo); } } }
相关文章推荐
- 【蓝桥杯】历届试题 最大子阵(运行超时)
- php设计模式之装饰器模式
- 浅谈文件描述符与文件指针
- leetcode---Add Binary---string
- KVO和通知机制
- 家谱(并查集)
- 铁大学生慧
- 完全背包问题
- 网络红人魏道道:做微商的不知道就真的“out”了
- Activity生命周期
- Java线程学习
- 码农小汪-Tomact使用war包发布项目
- [字符串与矩阵乘法]
- iOS之播放音效(AVFoundation)
- 汉堡包评价
- 2017京东实习生笔试题(一)
- Android和Java两平台通用的MD5加密
- Codeforces Round #345 (Div. 2) C. Watchmen __ map , sorting and combinatorics
- (OK) iso—mkisofs—linux—fedora23
- RHEL 6.3 安装 samba 方法整理.md