给定两个字符串,确定其中一个字符串重新排列后 是否包含另外一个字符串

例如:给定两个字符串,ac和abc,对字符串abc重新排列生成acb包含字符串ac,则为包含
思路:

  1. 默认a为长度较长的字符串,若b的长度大于a的字符串长度,则交换引用。
  2. 构造一个hashmap,将长串的每个字符存入这个map,key为字符,value为字符的个数
  3. 遍历判断b串,用b串的字符作为key,若从map中获取不到value,则不包含
    若获取到了value,map的value减1,若value小于0时,也不包含
public static void main(String[] args) throws Exception {

        String a = "abc";
        String b = "ac";
        String t;

        // a为大,b为小
        if(a.length() < b.length()){
            t = a;
            a= b;
            b =t;
        }
        char[] aChars = a.toCharArray();
        char[] bChars = b.toCharArray();

        Map<Character,Integer> map = new HashMap<Character,Integer>();
        //构造一个hashmap
        for(int i = 0;i<a.length();i++){
            if(map.get(aChars[i]) == null){
                map.put(aChars[i],1);
            }else{
                map.put(aChars[i],map.get(aChars[i])+1);
            }
        }
        //判断b串
        for(int i=0;i<b.length();i++){
            if(map.get(bChars[i]) == null){
                System.out.println("不存在");
            }else{
                map.put(bChars[i],map.get(bChars[i])-1);
                if(map.get(bChars[i]) < 0){
                    System.out.println("不存在");
                }
            }
        }
        System.out.println("存在");
    }
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值