单词子集

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

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

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

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

示例 1:

输入:A = ["amazon","apple","facebook","google","leetcode"], B = ["e","o"]
输出:["facebook","google","leetcode"]
class Solution {
public List<String> wordSubsets(String[] A, String[] B) {
int[]isValid=new int[A.length];
for(int i=0;i<B.length;i++){
String b=B[i];
//int []arrInit=new int[26]; for(int h=0;h<A.length;h++){ if(isValid[h]==-1)
continue;;
int[]arr=new int[26];
for(int j=0;j<b.length();j++)
arr[b.charAt(j)-'a']++; String a=A[h];
// System.out.print(arr['e'-'a']+" "); for(int j=0;j<a.length();j++){
if(arr[a.charAt(j)-'a']>0)
arr[a.charAt(j)-'a']--;
}
// System.out.print(arr['e'-'a']+" ");
for(int m=0;m<26;m++)
if(arr[m]>0){
isValid[h]=-1;
}
if(isValid[h]!=-1)
isValid[h]++;
// System.out.println(isValid[h]);
} }
List<String>re=new ArrayList<String>();
for(int i=0;i<A.length;i++){
if(isValid[i]==B.length)
re.add(A[i]); }
return re;
}
}

这段代码超时了,毕竟A,B的长度都10000了,复杂度怎么着也有10^8

优化一下之后通过

class Solution {
public List<String> wordSubsets(String[] A, String[] B) {
int arrInit[]=new int[26];
for(int i=0;i<B.length;i++){
int []arrTmp=new int[26];
String b=B[i];
for(int j=0;j<b.length();j++)
arrTmp[b.charAt(j)-'a']++;
for(int j=0;j<26;j++){
arrInit[j]=Math.max(arrTmp[j],arrInit[j]);
} }
//System.out.println(arrInit['e'-'a']+" "+arrInit['o'-'a']);
int[]isValid=new int[A.length];
for(int i=0;i<A.length;i++){
int arr[]=new int[26];
System.arraycopy(arrInit,0,arr,0,26);
String a=A[i];
for(int j=0;j<a.length();j++){
if(arr[a.charAt(j)-'a']>0)
arr[a.charAt(j)-'a']--;
}
// System.out.print(arr['e'-'a']+" ");
for(int m=0;m<26;m++)
if(arr[m]>0){
isValid[i]=-1;
break;
} // System.out.println(isValid[i]);
} List<String>re=new ArrayList<String>();
for(int i=0;i<A.length;i++){
if(isValid[i]==0)
re.add(A[i]); }
return re;
}
}

leetcode916的更多相关文章

  1. [Swift]LeetCode916.单词子集 | Word Subsets

    We are given two arrays A and B of words.  Each word is a string of lowercase letters. Now, say that ...

随机推荐

  1. ASP.NET CORE之上传文件夹

    最近闲余时间在做一个仿百度网盘的项目,其中就有一个上传文件夹的功能.查了下网上好像对这个问题的描述比较少,所以在此记录一下. 1.网上找来找去发现webkitdirectory这个东西,H5的一个新的 ...

  2. 获取当前人IP地址

    /*** 获取访问的IP地址* @date 2018年11月26日上午11:31:49* @user : taoshao* @param request* @return*/public String ...

  3. Mongodb-- python中使用pymongo连接mongodb数据库

    一.使用 通过pip或者pychrm下载pymongo模块 import json from pymongo import MongoClient from bson import ObjectId ...

  4. Python测试 ——开发工具库

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  5. spark踩坑——dataframe写入hbase连接异常

    最近测试环境基于shc[https://github.com/hortonworks-spark/shc]的hbase-connector总是异常连接不到zookeeper,看下报错日志: 18/06 ...

  6. IE6下javascript:void(0)不可用的解决

    <a href="javascript:void(0)" class="inp_sear_a" onclick="doSubmit();&quo ...

  7. http://www.vaikan.com/docs/jquery.form.plugin/jquery.form.plugin.html#getting-started

    http://www.vaikan.com/docs/jquery.form.plugin/jquery.form.plugin.html#getting-started Jquery.Form 异步 ...

  8. Git文件状态

    在Git中,文件状态是一个非常重要的概念,不同的状态对应不同的操作.因此,要想熟练掌握Git的用法,需要了解Git的几种文件状态. Git库所在的文件夹中的文件大致有4种状态: Untracked:未 ...

  9. 关于并发用户数的思考-通过PV量换算并发

    首先介绍一下pv量:PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次.UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客.00 ...

  10. Redis随笔(六)RESP的协议规范

    1.官网文档 https://redis.io/topics/protocol http://www.redis.cn/topics/protocol.html 2.协议介绍 redis协议规范(Re ...