两个字符串比较是否有相同内容

如何查找两个字符串中是否有相同的部分,比如说存在两个字符串?
例:

  1. 两个字符长比较:

注:这边比较的包含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;
	}
}

运行结果:
在这里插入图片描述

  1. 两个字符串比较

注:这边比较的包含多个字符相同都会被比较出来
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);

	}
}

运行结果:在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值