常见的子串问题
在我们学习一门新的语言时,例如c或者java时,我们不太熟习怎么去进行数据在字符串层次上的比较,比如常见的问题有最大公共子串,我们可以尝试采用
类似于一个二维数组的形式来进行字符串的比较,得出最大公共子串,那么这里就演示一下
比如:"abcde"和"abc"这个字符串的比较,可能你会觉得这个子串很短,一眼就可以看出来,当然我这里只是演示直观
如果你有更长的字符串不妨可以尝试一下。
这里采用的是一个二维数组的形式比较是否相等 如果相等就让其中的值为1,那么如果连续相等怎么办,自然是斜对角+1=得到当前
的相等数目 这样可以更好的进行比较 下面是代码
import java.util.ArrayList; //重复的长度 //重复的段落为 public class Test2A { private static ArrayList<Character> array =new ArrayList<Character>(); public static void main(String[] args) { String A="abcdefhijk"; String B="abcd"; fun(A,B); } private static void fun(String a, String b) { char[] arr1=a.toCharArray(); char[] arr2=b.toCharArray(); int[][] test=new int[arr1.length+1][arr2.length+1]; int max=0; int maxi=0; for(int i=1;i<arr1.length+1;i++){ for(int j=1;j<arr2.length+1;j++){ if(arr1[i-1]==arr2[j-1]){ test[i][j]=test[i-1][j-1]+1; } if(max<test[i][j]){ max=test[i][j]; maxi=i-1; } } } for(int i=maxi-max+1,n=max;n>0&&i<arr1.length;n--,i++){ array.add(arr1[i]); } System.out.println("长度为:"+max); System.out.println(array.toString()); } }
恐惧源于无知,代码改变世界
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义