黑马程序员_日记25_Java两个字符串的最大相同子串
来源:互联网 发布:java return后finally 编辑:程序博客网 时间:2024/06/05 10:07
——- android培训、java培训、期待与您交流! ———-
/*获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。 "abcwerthelloyuiodef" "cvhellobnm"模拟一下:第一趟:最大子串:cvhellobnm ↑--------↑在长字符串中查找abcwerthelloyuiodef↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑abcwerthelloyuiodef ↑--------↑没有找到。第二趟:最大子串1:cvhellobnm ↑-------↑最大子串2:cvhellobnm ↑-------↑继续在长串中匹配,如果没有找到。第三趟:最大子串1:cvhellobnm ↑------↑最大子串2:cvhellobnm ↑------↑最大子串3:cvhellobnm ↑------↑继续在长串中匹配,如果没有找到。第四趟:最大子串1:cvhellobnm ↑-----↑最大子串2:cvhellobnm ↑-----↑最大子串3:cvhellobnm ↑-----↑最大子串4:cvhellobnm ↑-----↑······如果找到了则停止,返回最大相同子串;如果最大子串为"",则放回没有最大相同子串。根据上面模拟过程,可以得到以下思路:第一步:在两个字符串中选取长度短的那个字符串为key,长的那个为str;转到第二步。第二步:从左到右,在str中匹配key,如果成功,转第四步;否则,转第三步。第三步:将key长度减一,得到多个长度相同的子串,每个子串依次执行第二步。当key为空串的时候,转到第五步。第四步:匹配成功,结束匹配。第五步:匹配失败。点评:第三步没有分析清楚,所以没有写出来。key.length()-0 子串1个key.length()-1 子串1+1个key.length()-2 子串1+1+1个key.length()-3 子串1+1+1+1个可以观察发现,第三步用大循环嵌套小循环实现。大循环为key的*/class getMaxSubstringDemo { public static void main(String[] args) { String str1 = "abcwerthelloyuiodef"; String str2 = "cvhellobnm"; System.out.println( getMaxSubstring(str1,str2)); } //匹配最大相同子串 public static String getMaxSubstring(String str1,String str2) { // 比较两个字符串长度,长的为str,短的为key String str = (str1.length()>str2.length())?str1:str2; String key = (str==str1)?str2:str1; for(int i = 0;i < key.length(); i++) { for(int j = 0,k = key.length()-i; k !=key.length()+1;j++,k++)//j为key的头指针,k为key的尾指针 { //设置一个临时变量,存储最大相同子串 String temp = key.substring(j,k); if(str.indexOf(temp) != -1) return temp; } } return ""; /*错误思路,未解决问题 //key在str中的位置 int index = str.indexOf(key); /2 用方法int indexOf(String str)进行判断key是否被包含在str中 当key不为空,且在str中没找到key时,执行循环。 当key为空,就结束循环。 当key不为空,inex!=-1时,说明找到了最大相同子串,停止循环。 / while(key.length() != 0 && index ==-1) { index = str.indexOf(key); } //key的长度减一,得到多个相同长度的key public static String getKeySubstring(String key) { for(int i = 0;i < key.length(); i++) { for(int j = 0;j < key.length()-i && j != key.length();) } } */ }}
0 0
- 黑马程序员_日记25_Java两个字符串的最大相同子串
- 黑马程序员_编写程序,获取两个字符串中最大相同子串
- 黑马程序员—取两个字符串中最大相同子串
- 黑马程序员_日记28_Java字符串缓冲区
- 两个字符串中最大相同子串
- 查找两个字符串的最大相同子串
- 两个字符串中最大相同的子串
- java/C++取两个字符串的最大相同子串
- 获取两个字符串中最大的相同子串
- [Java]取得两个字符串的最大相同子串
- 两个字符串中最大相同的子串
- 获取两个字符串中最大相同子串的实现
- 比较两个字符串,找出最大的相同子串
- 求两个字符串的最大相同子串
- 获取两个字符串的最大相同子串
- 求任意两个字符串的最大相同子串
- java练习获取两个字符串的最大相同子串
- java基础-找出两个字符串相同的最大子串
- 关于KMP算法
- java8 日期 时间 时区
- 程序员装机必备的十款软件
- virtualbox 玩转slitaz
- 如何用苹果设备安装并验证我们的产品是否发布成功。 第三讲
- 黑马程序员_日记25_Java两个字符串的最大相同子串
- arc mrc混编
- git-commit
- 学习笔记:android图片性能优化
- 初接触单例模式的些许了解
- tomcat 内存问题
- POJ - 3255 Roadblocks (次短路)
- Hadoop namenode无法启动常见解决办法
- Discuz 3.2 注册后跳转网页