leetcode:916. 单词子集

6 篇文章 0 订阅

我们给出两个单词数组 A 和 B。每个单词都是一串小写字母。

现在,如果 b 中的每个字母都出现在 a 中,包括重复出现的字母,那么称单词 b 是单词 a 的子集。 例如,“wrr” 是 “warrior” 的子集,但不是 “world” 的子集。

如果对 B 中的每一个单词 b,b 都是 a 的子集,那么我们称 A 中的单词 a 是通用的。

你可以按任意顺序以列表形式返回 A 中所有的通用单词。

 

示例 1:

输入:A = ["amazon","apple","facebook","google","leetcode"], B = ["e","o"] 输出:["facebook","google","leetcode"]

示例 2:

输入:A = ["amazon","apple","facebook","google","leetcode"], B = ["l","e"] 输出:["apple","google","leetcode"]

示例 3:

输入:A = ["amazon","apple","facebook","google","leetcode"], B = ["e","oo"] 输出:["facebook","google"]

示例 4:

输入:A = ["amazon","apple","facebook","google","leetcode"], B = ["lo","eo"] 输出:["google","leetcode"]

示例 5:

输入:A = ["amazon","apple","facebook","google","leetcode"], B = ["ec","oc","ceo"] 输出:["facebook","leetcode"]

 

提示:

  1. 1 <= A.length, B.length <= 10000
  2. 1 <= A[i].length, B[i].length <= 10
  3. A[i] 和 B[i] 只由小写字母组成。
  4. A[i] 中所有的单词都是独一无二的,也就是说不存在 i != j 使得 A[i] == A[j]。

 

 

 

代码:


<?php
   function wordSubsets($A, $B) {
        $arr = $max_key_arr = [];
        $A = array_unique($A);
        $B = array_unique($B);
        foreach($B as $K2 =>$V2){
            $strlen = strlen($V2);
            $temp_arr = [];
            while ($strlen) {
                # code...
                if(array_key_exists(substr($V2,0,1), $temp_arr)){
                    $temp_arr[substr($V2,0,1)]++;
                }else{
                    $temp_arr[substr($V2,0,1)] = 1;
                }
                $V2 = substr($V2,1);
                $strlen = strlen($V2);
            }
            
            foreach ($temp_arr as $key => $value) {
                # code...
                if(!array_key_exists($key,$max_key_arr)){
                    $max_key_arr[$key] = $value;
                    continue;
                }
                if($max_key_arr[$key] <$value){
                    $max_key_arr[$key] = $value;
                }
            }
        }
        foreach($A as $K=>$V){
            $flag = 1;
            $arr2 = [];
            $temp = $V;
            $strlen = strlen($V);
            while ($strlen) {
                # code...
                if(array_key_exists(substr($V,0,1), $arr2)){
                    $arr2[substr($V,0,1)]++;
                }else{
                    $arr2[substr($V,0,1)] = 1;
                }
                $V = substr($V,1);
                $strlen = strlen($V);
            }
            foreach ($max_key_arr as $key => $value) {
                # code...
                if(!array_key_exists($key, $arr2)){
                    $flag = 0;
                    break;
                }
                if($arr2[$key] <$value){
                    $flag = 0;
                    break;
                }
            }
            if($flag){
                $arr[] = $temp;
            }
        }
        
        return $arr;
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值