LeetCode 438. Find All Anagrams in a String
来源:互联网 发布:皮蓬总决赛数据 平均 编辑:程序博客网 时间:2024/05/23 22:56
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".
用HashTable,把p串的字符存储在HashTable中,需要查找p串中是否有某个字符的时候,直接在HashTable中定位到。
class Solution {public: vector<int> findAnagrams(string s, string p) { int len1 = s.size(); int len2 = p.size(); vector<int> res; if(len1 < len2 || !len2) return res; int m[26]; int i, j, k; for(i = 0; i < 26; i ++) m[i] = 0; for(i = 0; i < len2; i ++){ m[p[i] - 'a'] ++; } int tmpm[26]; for(i = 0; i <= len1 - len2; i ++){ if(m[s[i] - 'a']){ for(k = 0; k < 26; k ++) tmpm[k] = m[k]; for(j = i; j < len2 + i; j ++){ if(tmpm[s[j] - 'a']){ tmpm[s[j] - 'a'] --; }else break; } if(j == len2 + i) res.push_back(i); } } return res; }};
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
- [leetcode] 438. Find All Anagrams in a String 解题报告
- 【leetcode】438. Find All Anagrams in a String【E】
- [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 (Easy) (cpp)
- 【LeetCode】 438. Find All Anagrams in a String
- [LeetCode]438. Find All Anagrams in a String
- Ubuntu server下搭建Maven私服Nexus
- 网络问题
- 绿色软件如何设置windows自启动?
- 安卓高级8 SurfaceView (1)
- Git常用命令总结
- LeetCode 438. Find All Anagrams in a String
- 115. Distinct Subsequences
- Java RMI之HelloWorld篇
- [转载]处理百万级以上的数据提高查询速度的方法
- CTF writeup 1_网络安全实验室
- 安卓高级8 SurfaceView案例二 自定义相机
- PAT1039. 到底买不买(20)
- 杭电oj编码2029
- 【Linux学习】epoll详解