Find the minimum length word from a given dictionary words, which has all the letters from the string licensePlate. Such a word is said to complete the given string licensePlate

Here, for letters we ignore case. For example, "P" on the licensePlate still matches "p" on the word.

It is guaranteed an answer exists. If there are multiple answers, return the one that occurs first in the array.

The license plate might have the same letter occurring multiple times. For example, given a licensePlate of "PP", the word "pair" does not complete the licensePlate, but the word "supper" does.

Example 1:
Input: licensePlate = "1s3 PSt", words = ["step", "steps", "stripe", "stepple"]
Output: "steps"
Explanation: The smallest length word that contains the letters "S", "P", "S", and "T".
Note that the answer is not "step", because the letter "s" must occur in the word twice.
Also note that we ignored case for the purposes of comparing whether a letter exists in the word.
Example 2:
Input: licensePlate = "1s3 456", words = ["looks", "pest", "stew", "show"]
Output: "pest"
Explanation: There are 3 smallest length words that contains the letters "s".
We return the one that occurred first.
Note:
licensePlate will be a string with length in range [1, 7].
licensePlate will contain digits, spaces, or letters (uppercase or lowercase).
words will have a length in the range [10, 1000].
Every words[i] will consist of lowercase letters, and have length in range [1, 15].

模拟找一下

class Solution {
public:
string shortestCompletingWord(string licensePlate, vector<string>& words) {
map<char, int> mp;
int len = 1000000;
string ans = "";
for (auto c : licensePlate) {
if (c >= 'A' && c <= 'Z') c += 32;
if (c >= 'a' &&c <= 'z') {
mp[c]++;
cout << c <<endl;
}
}
for (int i = 0; i < words.size(); ++i) {
map<char, int> mp1 = mp;
for (auto c : words[i]) {
if (c >= 'A' && c <= 'Z') c += 32;
if (c >= 'a' &&c <= 'z') {
if (mp1[c] > 0)mp1[c] --;
}
}
int mark = 0;
for (auto x : mp1) {
if (x.second != 0) {
mark = 1;break;
}
}
if (!mark) {
if (words[i].size() < len) {
len = words[i].size();
ans = words[i];
}
}
}
return ans;
}
};

最新文章

  1. QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
  2. [AlwaysOn Availability Groups]排查:AG超过RTO
  3. aop
  4. 编写ros串口节点,使用官方serial包
  5. mongkeyrunner实现循环随机输入值的方法
  6. &amp;12-2 查找二叉搜索树
  7. Linux系统软件
  8. css3整理--clip
  9. Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)
  10. Android写入文件操作权限
  11. OpenStack 部署总结之:在CentOS 6.5上使用RDO单机安装icehouse(Ml2+GRE)
  12. STL模板_概念
  13. 【Android UI】案例03滑动切换效果的实现(ViewPager)
  14. linux memory release commands内存清理/释放命令
  15. 使用Python解析豆瓣上Json格式数据
  16. 获取Promise的值
  17. SqlServer跨集群升级
  18. Spring boot Value注入 未整理 待完善
  19. InitComponent的使用
  20. 【fake题解】[NOI2013]向量内积

热门文章

  1. Babel6.x的安装过程
  2. [开源] FreeSql.Tools Razor 生成器
  3. gitlab升级、汉化、修改root密码
  4. python生成器、迭代器、__call__、闭包简单说明
  5. 利用adb截屏
  6. Codeforces Round #321 (Div. 2) Kefa and Dishes 状压+spfa
  7. Java线程池的内部实现
  8. Geoserver跨域请求设置
  9. ios 使用keychain具体方法
  10. Android 检查输入