百度2015测试开发面试:两个字符串的最长公共子序列
来源:互联网 发布:表格怎么剔除重复数据 编辑:程序博客网 时间:2024/06/05 23:56
百度面试碰到的一道题:
给定两个字符串a,b,输出两个字符串的最长公共子序列;
如String a = "abcabcde";String b = "bcd123bcde",那么二者的最长公共子序列就是"bcde"。
package com.liuhao.acm.exam;public class LongestComSub {public String getLongestComSub(String str1, String str2) {String longestStr = "";// 始终存放最长的子序列int maxLen = 0;// 存放最长子序列的长度for (int i = 0; i < str1.length(); i++) {String tempStr = "";// 存放本次遍历中的最长子序列int tempMax = 0;// 存放本次遍历最长子序列的长度int index = i;// 保存i的副本boolean eq = false;// 标记是否有公共子序列for (int j = 0; j < str2.length(); j++) {// 若当前字符相同,则index++if (index < str1.length() && str1.charAt(index) == str2.charAt(j)) {tempStr += str1.charAt(index);// 将当前字符添加到tempStrindex++;tempMax++;eq = true;// maxLen中总是存放最长序列的长度if (tempMax > maxLen) {maxLen = tempMax;longestStr = tempStr;}}// 若不相等else {// 将第一个字符串的索引指向初始位置index = i;tempStr = "";tempMax = 0;//j要-1,否则会跳掉一个字符if (eq) {j--;}eq = false;}}}return longestStr;}public static void main(String[] args) {String str1 = "aaawwwwwaaaawaaaaaaa";String str2 = "aaawa1aaaaaaa";System.out.println(new LongestComSub().getLongestComSub(str1, str2));}}
代码只返回了一个最长的公共子序列,若存在多个等长的,可以放在一个list里面,然后返回。
0 0
- 百度2015测试开发面试:两个字符串的最长公共子序列
- 两个字符串的最长公共子序列
- 最长公共子串序列一之两个字符串的最长公共子序列
- dp---两个字符串最长公共子序列
- 找两个字符串的最长公共子序列的长度
- 求两个字符串的最长公共子序列的数量
- 两个字符串的最长公共子序列的长度
- 求两个字符串的最长公共子序列
- 求两个字符串的最长公共子序列
- POJ 2774 两个字符串的最长公共子序列。
- 两个字符串的最长公共子序列(可以不连续)
- poj1458Common Subsequence(求两个字符串的最长公共子序列)
- 求两个字符串的最长公共子序列
- 求解两个字符串的最长公共子序列
- 求两个字符串的最长公共子串,最长公共子序列,编辑距离
- 最长公共子串序列一之 两个字符串的最长公共子串
- 两个序列的最长公共子序列
- 求两个字符串的最长的连续公共子串和求两个字符串的公共子序列
- socket备忘
- 中国计算机学会推荐国际学术会议和期刊目录
- CoreData取数据提示data:<fault>且数据为空解决办法
- MVC数据库迁移
- 两个单向链表,找出它们的第一个公共结点
- 百度2015测试开发面试:两个字符串的最长公共子序列
- java反射机制详解 及 Method.invoke解释 getMethod
- win7开机切换屏幕
- 使用linux配置交换机端口汇聚(H3C S5120)
- 使用Jenkins搭建iOS的CI服务器(一)
- 关于“you need to use a theme.appcompat theme (or descendant) with this activity”错误
- POJ 2551 Ones
- ERROR: ld.so: object '/lib/libSegFault.so' from LD_PRELOAD cannot be preloaded: ignored.
- ListView回收机制相关分析