我们定义一个字符串的超集为: 若字符串A包含字符串B中的所有字符,且字符串A中某一字符 a 的数量不小于a在字符串B中的数量,那么A为B的“超集”。

package com.chen;


public class stringTest {
    public static void main(String[] args) {
        String a = "ABBABCCDE";
        String b = "ABBCCD";
        //判断b中的元素是否都在a中
        System.out.println(toChar(a,b));


    }
    public static boolean toChar(String a,String b) {
        StringBuffer stringBuffer1 = new StringBuffer(a);
        StringBuffer stringBuffer2 = new StringBuffer(b);
        for (int i = 0; i<stringBuffer2.length();) {

            if (stringBuffer1.charAt(i) == stringBuffer2.charAt(i)) {
                    stringBuffer1.deleteCharAt(i);
                    stringBuffer2.deleteCharAt(i);
                } else {
                    stringBuffer1.deleteCharAt(i);
                }


        }
        if (stringBuffer2.length() > 0){
            return false;

        }else{
            return true;
        }

    }



}

第二种写法,我是真的笨。。。

 

package com.queue;

import java.util.*;

public class Chaoji {
    public static void main(String[] args) {
        String a = "ABBABCCDE";
        String b = "ABBCCD";
        List list1 =toList(a);
        List list2 = toList(b);
        //判断b是否存在A中
        boolean bb =list1.containsAll(list2);
        if(!bb){
            System.out.println("不是");
        }else{
            //判断个数
            Map map1 =toMap(list1);
            Map map2 =toMap(list1);
            //判断个数
            boolean bbb = pan(map1,map2);
            if (!bbb){
                System.out.println("不是");
            }else {
                System.out.println("是");
            }
        }
    }

    private static boolean pan(Map map1, Map map2) {
        Iterator<Character> iter = map1.keySet().iterator();
        int value1 = 0;
        int value2 =0;
        while(iter.hasNext()){
            Character key= iter.next();
             value1 = (int)map1.get(key);
             value2 =(int)map2.get(key);

        }
        if(value2>value1){
            return false;
        }else{
            return  true;
        }
    }

    private static Map toMap(List list1) {
        Map map = new HashMap();
        for (Object i : list1) {
            if (map.get(i) == null) {
                map.put(i, 1);
            } else {
                map.put(i, (int)map.get(i) + 1);
            }
        }
        return  map;
    }


    //转换成list;
    private static List toList(String b) {
        List list  = new ArrayList();
        char[] arr = b.toCharArray();
        for (int i = 0; i <arr.length ; i++) {
            list.add(arr[i]);
        }
        return list;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值