日期:2014-05-20  浏览次数:20827 次

找出2个字符串中所有相同的字符
用JAVA写一个程序找出2个字符串中所有相同的字符

------解决方案--------------------
public class Test29 {
public static void main(String[] args) {
String s1 = "34232fff ";
String s2 = "f3dx4 ";
StringBuilder result = new StringBuilder();
while(!s2.equals( " ")) {
String subs = s2.substring(0, 1);
s2 = s2.replaceAll(subs, " ");
int length = s1.length();
s1 = s1.replaceAll(subs, " ");
if(s1.length() < length)
result.append(subs);
}
System.out.println(result);
}
}
------解决方案--------------------
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;

public class StringPattern {
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