LeetCode 438 Find All Anagrams in a String
来源:互联网 发布:atsl有obd端口吗 编辑:程序博客网 时间:2024/06/05 19:09
题目:
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s.
Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100.
The order of output does not matter.
Example 1:
Input:s: "cbaebabacd" p: "abc"Output:[0, 6]Explanation:The substring with start index = 0 is "cba", which is an anagram of "abc".The substring with start index = 6 is "bac", which is an anagram of "abc".
Example 2:
Input:s: "abab" p: "ab"Output:[0, 1, 2]Explanation:The substring with start index = 0 is "ab", which is an anagram of "ab".The substring with start index = 1 is "ba", which is an anagram of "ab".The substring with start index = 2 is "ab", which is an anagram of "ab".题目链接
题意:
给一个字符串s(未知是否为空),和一个模版字符串p(不为空),要求找到以模版字符串p的字母排列组合后形成的字符串在s中的序的集合(vector)。
我们可以统计模版字符串中各个字母出现的次数,放在数组model中,之后从0开始遍历s,将从i到i+p.length()-1的字母出现次数存放在数组v中,每次维护数组v,并比较v和model是否相同,相同则将当前i加入到ans中即可。
代码如下:
class Solution {public: bool judge(int a[], int b[]) { for (char c = 'a'; c <= 'z'; c ++) { if (a[c] != b[c]) { return false; } } for (char c = 'A'; c <= 'Z'; c ++) { if (a[c] != b[c]) { return false; } } return true; } vector<int> findAnagrams(string s, string p) { if (s.length() < p.length()) return {}; int model[200] = {0}, v[200] = {0}, len = p.length(); for (int i = 0; i < len; i ++) { model[p[i]] ++; v[s[i]] ++; } vector<int> ans; if (judge(model, v)) { ans.push_back(0); } for (int i = 1; i+len-1 < s.length(); i ++) { v[s[i+len-1]] ++; v[s[i-1]] --; if (judge(model, v)) { ans.push_back(i); } } return ans; }};
阅读全文
0 0
- LeetCode Find All Anagrams in a String
- leetcode: Find All Anagrams in a String
- [LeetCode]Find All Anagrams in a String
- Leetcode Find All Anagrams in a String
- LeetCode : Find All Anagrams in a String
- leetcode[Find All Anagrams in a String]
- LeetCode #438: Find All Anagrams in a String
- LeetCode 438: Find All Anagrams in a String
- Leetcode 438 Find All Anagrams in a String
- [python]leetcode(438). Find All Anagrams in a String
- LeetCode 438 Find All Anagrams in a String
- LeetCode 438 Find All Anagrams in a String解析
- 438 Find All Anagrams in a String
- leetcode 438. Find All Anagrams in a String
- LeetCode 438. Find All Anagrams in a String
- LeetCode 438. Find All Anagrams in a String
- [leetcode] 438. Find All Anagrams in a String 解题报告
- 【leetcode】438. Find All Anagrams in a String【E】
- SVN各种情况说明
- Linux常用的vi按键说明
- 用户重复提交问题的解决方案
- mac下给python3安装requests库和scrapy库
- 第一次 小白之声
- LeetCode 438 Find All Anagrams in a String
- 吴恩达:史上最通俗易懂的人工智能概念解释
- 有赞电话面经
- mysql 在 1,11,12,3,13 中选出id的值
- HDU
- C# 类型转换方法
- 微信小程序源码分享
- export solr data
- 微信小程序开发调试阶段不校验请求域名