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

时间:2025-02-15 18:02:10

例如:给定两个字符串,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(() < ()){
            t = a;
            a= b;
            b =t;
        }
        char[] aChars = ();
        char[] bChars = ();

        Map<Character,Integer> map = new HashMap<Character,Integer>();
        //构造一个hashmap
        for(int i = 0;i<();i++){
            if((aChars[i]) == null){
                (aChars[i],1);
            }else{
                (aChars[i],(aChars[i])+1);
            }
        }
        //判断b串
        for(int i=0;i<();i++){
            if((bChars[i]) == null){
                ("不存在");
            }else{
                (bChars[i],(bChars[i])-1);
                if((bChars[i]) < 0){
                    ("不存在");
                }
            }
        }
        ("存在");
    }