如何查找两个字符串中是否有相同的部分,比如说存在两个字符串?
例:
- 两个字符长比较:
注:这边比较的包含1个字符相同都会被比较出来
String str1=“abcdefg”;
String str2=“bcde”;
package a;
import java.util.ArrayList;
import java.util.List;
public class b {
public static void main(String[] args) {
String str1="abcdefg";
String str2="bcde";
//查找匹配的子串
List<String> list = search(str1, str2);
//打印结果
for(String str : list) {
System.out.print(str + " ");
}
System.out.println();
}
/**
* 查找str1和str2中相同的部分,其思路是在长度短的一个字符串中依次找长度为1,2,...,n的子字符串,
* 然后再长度长的字符串中看是否包含此字符串,包含的话,就加入list,否则继续。最后返回list
* @param str1 待查找的字符串
* @param str2 待查找的字符串
* @return 包含相同部分的list
*/
private static List<String> search(String str1, String str2) {
String temp = "";
List<String> list = new ArrayList<String>();
//如果str1的长度小于str2的长度,则交换,方便后面的处理
if(str1.length() > str2.length()) {
temp = str1;
str1 = str2;
str2 = temp;
}
for(int i=1; i<=str1.length(); i++) {
for(int j=0; j<=str1.length()-i; j++) {
temp = str1.substring(j , j+i);
if(str2.contains(temp)) {
list.add(temp);
}
}
}
return list;
}
}
运行结果:
- 两个字符串比较
注:这边比较的包含多个字符相同都会被比较出来
String str1 = “1130,10,111”;
String str2 = “1130”;
package a;
import java.util.List;
public class a {
public static boolean containRepeatChar(String str, String str1) {
try {
String[] arr1 = str.split(",");
String[] arr2 = str1.split(",");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr1.length; j++) {
if (arr1[j].equals(arr2[i])) {
sb.append(arr1[j] + ",");
}
}
}
System.out.println("结果:" + sb.toString().substring(0, sb.toString().length() - 1));
return true;
} catch (Exception e) {
System.out.println("结果:没有重复的数据");
return false;
}
}
public static void main(String[] args) {
String str1 = "1130,10,111";
String str2 = "1130";
boolean result = containRepeatChar(str1, str2);
}
}
运行结果: