在网上看了一些求两个字符串的最大公共子串的例子,因为多是用了一些算法的思想,自己看的不太懂,就自己试着写了一个,结果还是有些惊喜的,虽然应该不是最简单和高效的,但应该是代码比较少的了吧,呵呵~小骄傲一下。
public class CompareStrM
{
public static void main(String[] args)
{
String str1 = "今天,听到一首歌是这么唱的:“明月几时有,把酒问青天”。。。。";
String str2 = "苏轼的“明月几时有,把酒问青天”是千古名句";
String minStr = str1.length() >= str2.length() ? str2 : str1;
String maxStr = str1.length() <= str2.length() ? str2 : str1;
ArrayList<String> lList = new ArrayList<String>();
int maxLength = 1;
for (int i = 0; i < minStr.length() - maxLength * 2; i++) {
String subStr = minStr.substring(i, i + maxLength);
if (maxStr.contains(subStr)) {
String str = null;
int len = maxLength;
do {
len++;
str = minStr.substring(i, i + len);
} while (maxStr.contains(str));
if (len-- >= maxLength) {
lList.add(str.substring(0, str.length() - 1));
maxLength = len;
}
}
}
System.out.println("MaxLength: " + maxLength + "\n");
for (String s : lList) {
if (s.length() == maxLength) {
System.out.print("最大相同子串是: " + s);
}
}
}
}
之后,也会继续整理一些找到的资料贴到下面。
分享到:
相关推荐
两个字符串里求最长的公共子串
主要介绍了java实现求两个字符串最大公共子串的方法,详细的描述了两个字符串的最大公共子串算法的实现,需要的朋友可以参考下
设计最大公共子串 第一步:输入字符s和t 第二步:将s和t拆分,建立一个二维数组 第三步:比如第一行第一列表示字符串s和t的第一个字符是否相等,相等返回1,不等返回0 第四步:分别求二维数组中斜线上的公共子串...
求两个字符串的最大公共子串的问题,用矩阵法得到复杂度O(M*N)
目录(善用Ctrl+F) 本人面试点合集 脑图在线编辑地址 ...最大公共子串 动态规划 大厂面试爱问的「调度算法」,20张图一举拿下 图解红黑树 面试必备 | 不可能的食品链表 红黑树【图解】 改进学习工具网站 必会框架
最大公共子串 动态规划 大厂面试爱问的「调度算法」,20 张图一举拿下 图解红黑树 面试必备 | 不可不会的反转链表 红黑树【图解】 算法学习工具网站 必会框架 Spring全家桶以及源码分析 SpringCloud 分布式框架基石-...
最长公共子串 删除重复项 形成回文 字符串中最长的不同字符实现 Atoi 实现 strstr 最长公共前缀子数组与给定的总和解决了上述问题? 再问一些问题 链接列表: 在链表中查找中间元素 反转链表 旋转链表 以给定大小的...
java中最长的公共子串 最长递增子序列 硬币变化 最大化切割段 使分区相等的子集的最小总和分区 多米诺骨牌放置 逆因子 在旋转列表中找到最大的数字 可整除数 leetcode 332 硬币找零问题 最大积子
2.最长公共子串 3.矩阵链乘法 4.最优二叉查找树 greedy:贪心算法 leetcode: LeetCode上的题目 methodofprogramming: 编程之美上的例子以及习题 第一章:字符 AlternateStr: 输入三个字符串s1、s2和s3,判断第三个字符...
最长公共前缀 最小窗口子串, 有效回文, 反向字符串, 反向字符串 II , 反向字符串 III , 反转元音 , 删除元音, 查找常见字符, 最常用的词, 长按名称, 数组 二和, 3总和更小, 排序数组中的单个元素, 第三个...
最大子阵列 使用 Kadane 的算法 多数元素使用分而治之的方法 添加字符串 重新排序日志文件中的数据 会议室 中等的 前 K 个常用词使用优先队列 最长公共子序列 最长回文子串 宝藏岛 克隆图 难的 拓扑排序 最长连续...
域子域名问题名称问题链接语言解决方案链接演算法位操作AND产品Java8的演算法位操作密码Java8的演算法位操作柜台游戏Java演算法位操作翻转位Java演算法位操作孤独整数Java演算法位操作最大化异或Java演算法位操作Sa...
最大子阵列 简单的 Java 9 毫秒/21.6% 696 计算二进制子串 简单的 C 12ms/75.00% 55 跳跃游戏 中等的 Java 7ms/39.21% 02 两个数字相加 中等的 Java 38 毫秒/11.04% 03 无重复字符的最长子串 中等的 Java 113ms/...
在母串中找到子串第一次出现的位置 Easy 向vector插入一条数据 Easy 观察规律 Hard 输出第一个不见的正整数 Medium 矩阵旋转90° Easy 最大子序列和 Medium 判断能否跳到最后 Easy vector East 爬楼梯 Easy 单链表...
java lru leetcode 力码 不。 问题 解决方案 30 连接所有单词的子串 43 字符串相乘 65 有效号码 609 在系统中查找重复文件 779 语法中的第 K 个符号 819 最常用的词 829 连续数和 937 重新排序日志文件中的数据 1056...
无重复字符的最长子串 字符串转换整数 盛水最多得容器 括号生成 搜索旋转排序数组 全排列 跳跃游戏 合并区间 LRU缓存机制 翻转字符串里的单词 二叉树的右视图 岛屿数量 数字范围按位与 生命游戏 设计推特 水壶问题 ...
2 8 字符串的最长回文子串:Manacher 算法 42 第 3 章 序列 44 3 1 网格中的最短路径 44 3 2 编辑距离(列文斯登距离45 3 3 最长公共子序列 47 3 4 升序最长子序列 49 3 5 两位玩家游戏中的必胜策略 52 第 4 章 数组...
最长公共前缀 简单 三数之和 中等 0020 有效的括号 简单 0021 合并两个有序链表 简单 0026 删除排序数组中的重复项 简单 0027 移除元素 简单 0028 实现 strStr() 简单 下一个排列 中等 在排序数组中查找元素的第一个...
最长公共前缀 简单的 15 3总和 中等的 16 3和最近 中等的 17 电话号码的字母组合 中等的 19 从列表末尾删除第 N 个节点 中等的 20 有效括号 简单的 21 合并两个排序列表 简单的 22 生成括号 中等的 23 合并 k 个排序...
结果如下:(越高越好,最大为 100) 困难 全部的 运行速度更快 内存(MB) 简单的 83 82.91 42.34 中等的 66 71.18 43.79 难的 9 35.18 53.51 全部的 158 75.29 43.58 ID 标题 困难 运行速度更快 内存(MB) 1 二和 ...