【C语言】Leetcode 916. 单词子集

解题思路:
1、开始阶段使用暴力解法,通过将A/B字符中中的’a’~‘z’ 26个字符的数量统计出来,然后计算A中的每个字符串是否大于B中的每个字符串的长度。
2、优化算法:BNum[BSize][MAX_COL] 计算每一列的最大的长度,然后把A中的每个字符串与最大长度比较,是否满足ANum[ASize][MAX_COL] > maxOfCol[MAX_COL],如果全部满足,可以认为是满足条件的。只要有一个不满足,则不满足这个条件。

https://leetcode-cn.com/problems/word-subsets/
我们给出两个单词数组 A 和 B。每个单词都是一串小写字母。
现在,如果 b 中的每个字母都出现在 a 中,包括重复出现的字母,那么称单词 b 是单词 a 的子集。 例如,“wrr” 是 “warrior” 的子集,但不是 “world” 的子集。
如果对 B 中的每一个单词 b,b 都是 a 的子集,那么我们称 A 中的单词 a 是通用的。
你可以按任意顺序以列表形式返回 A 中所有的通用单词。

#define MAX_LEN 11
#define MAX_COL 26
#define MAX(a,b) (a) > (b) ? (a) : (b)

char ** wordSubsets(char ** A, int ASize, char ** B, int BSize, int* returnSize){
   
    int **BNum = (int **) malloc (BSize * sizeof(int *));
    for (int i = 0; i < BSize; i++){
   
        BNum[i] = (<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值