寻找两个字符串的最大相同子串
需积分: 50 44 浏览量
更新于2024-09-10
收藏 1KB TXT 举报
"找到两个字符串中最大相同的子串。例如:'qwerabcdtyuiop' 和 'xcabcdvbn'。"
在这个Java程序中,我们寻找的是两个字符串`str1`和`str2`之间的最大公共子串。程序通过双重循环遍历字符串`str2`的所有可能的子串,并检查这些子串是否存在于字符串`str1`中。以下是程序的详细步骤:
1. 定义变量`count`为0,用于存储有效子串的数量。创建一个大小为100的字符串数组`s`,用于暂存找到的子串。
2. 使用外层循环遍历字符串`str2`的每个字符,内层循环则以当前字符为起始点,寻找长度递增的子串。如果子串`str2.substring(i, i+j)`在`str1`中存在(`str1.contains()`返回`true`),则将这个子串添加到数组`s`中,并增加`count`的值。
3. 定义变量`count2`为0,用于记录非空子串的数量。遍历数组`s`,每遇到一个非空子串,`count2`加1。这一步是为了去除重复的子串。
4. 创建新的字符串数组`s1`,其大小等于`count2`,并将`s`中的非空子串复制到`s1`中。这样,`s1`就只包含唯一的非空子串。
5. 初始化一个整型数组`a`,大小为`count2`,用于存储每个子串的长度。遍历`s1`,将每个子串的长度填入`a`中,并进行排序。
6. 遍历`a`数组,找出最长的子串(即数组末尾的元素,因为已经排序),然后在`s1`中找到具有该长度的子串并打印出来。这是最大公共子串。
这个程序的时间复杂度较高,因为它使用了两层嵌套循环,导致时间复杂度为O(n^2),其中n是较短字符串的长度。在处理较长的字符串时,效率可能会降低。为了提高效率,可以考虑使用更高级的数据结构或算法,如动态规划(动态规划方法的时间复杂度可优化至O(n*m),其中n和m分别是两个字符串的长度)。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-09-01 上传
2012-09-16 上传
2020-09-03 上传
2023-11-06 上传
2024-09-25 上传
2023-03-23 上传
qq_32606467
- 粉丝: 0
- 资源: 2
最新资源
- Evergarden:思想和笔记的公共数字花园
- [论坛社区]okphp BBS v4.0_okphpbbs.rar
- ipetfinals
- ASP 网站站长计数器 v1.0
- DICOM 示例文件:包含大脑 MR 图像的示例 DICOM 文件。-matlab开发
- FM5830_code,c语言源码怎么写,c语言项目
- C-Blog 2.1 正式版_cblog2-mysql_博客论坛网站开发模板(使用说明+源代码+html).zip
- todo-cloudbuild
- SpeakT-crx插件
- 安卓伏羲X v2.0.1双版 免Root装载Xposed模块功能.txt打包整理.zip
- json-conditions:简单的条件逻辑以针对javascript对象进行评估
- 分子查看器:用于绘制简单的 .pdb 文件的轻量级 m 文件。-matlab开发
- 绿色耀眼互联网产品企业网站模板5536_网站开发模板含源代码(css+html+js+图样).zip
- light-sphere.tar.gz_C/C++_源码,c语言读网页源码,c语言项目
- wztlink1013_github_io-master.zip
- kirby-multilist:在Kirby 3中快速管理具有多个字段的列表