str a="abcdefg"
str b="babcefg"
两字符串相同的字符串有"a""b"c"e"f"g" "ab" "bc" "ef""fg"
如何用JAVA写程序求出两字符串中所有相同的字符串
str b="babcefg"
两字符串相同的字符串有"a""b"c"e"f"g" "ab" "bc" "ef""fg"
如何用JAVA写程序求出两字符串中所有相同的字符串
解决方案 »
- 新手求教。。二维数组 查找的方法
- TitleBorder现在不能用吗???
- Java udp发送大图片丢失
- Vectot的克隆问题
- 谁能告诉PushbackInputStream这个类有什么用处
- 如何根据JTree节点信息不同改变节点图案?
- ====》菜鸟问问题罗:non-static method this cannot be referenced from a static context
- 请问如何用java解压缩rar文件?
- 有关于Swing中文本域(JTextArea)控件显示问题
- 写一个判断语句,来大神指点下
- 关于thinking in java 中month的问题
- 暑假在家闲得要命,写了个简单的算术式解析器,大家来批评一下吧
*
*/
package test;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;/**
* @author Daniel Cao
* @date 2007-8-9
* @time 上午11:23:22
*
*/
public class StringPattern {
/**
* *
*
* @param args
*/
public static void main(String[] args) {
getMaxPattern("abcdefg", "babcefg");
} public static void getMaxPattern(String strA, String strB) {
// 只要有一个null,就返回null
if (strA == null || strB == null || strA.trim().equals("")
|| strB.trim().equals("")) {
System.out.println("");
return;
}
int lengthA = strA.length();
int lengthB = strB.length();
String longStr = lengthA > lengthB ? strA : strB;
String shortStr = lengthA > lengthB ? strB : strA;
Map<Integer, List<String>> maxSubstrList = new TreeMap<Integer, List<String>>();
for (int length = shortStr.length(); length >= 0; length--) {
for (int startIndex = 0; startIndex <= shortStr.length() - length; startIndex++) {
String substr = shortStr.substring(startIndex, startIndex
+ length);
if (longStr.indexOf(substr) > -1) {
int len = substr.length();
List<String> list;
if (maxSubstrList.containsKey(len)) {
list = (List<String>) maxSubstrList.get(len);
} else {
list = new ArrayList<String>();
}
if (!list.contains(substr)) {
list.add(substr);
}
maxSubstrList.put(len, list);
}
}
}
// 找到最大匹配子串
if (maxSubstrList.size() == 0) {
return;
} else {
Iterator<Entry<Integer, List<String>>> it = maxSubstrList
.entrySet().iterator();
Entry<Integer, List<String>> entry = it.next();
while (it.hasNext()) {
entry = it.next();
List<String> maxList = entry.getValue();
for (String str : maxList) {
System.out.println(str);
}
}
}
}
}输出结果:
a
b
c
e
f
g
ab
bc
ef
fg
abc
efg这是我在 求最大子串 的程序上稍微改了点代码得到的 求所有相同子串的程序~
public class String1 {
public void equealString(){
String a = "abcdefg";
String b = "babcefg";
for(int i = 0;i < b.length()+1;i ++){
for(int j = i+1;j < b.length()+1;j ++){
String str;
str = b.substring(i, j);
if(a.indexOf(str) != -1){
System.out.println(str);
}
}
}
}
public static void main(String avg[]){
String1 str = new String1();
str.equealString();
}
}