30. Substring with Concatenation of All Words
Posted 咖啡中不塌缩的方糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了30. Substring with Concatenation of All Words相关的知识,希望对你有一定的参考价值。
You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in words exactly once and without any intervening characters.
For example, given:
s: "barfoothefoobarman"
words: ["foo", "bar"]
You should return the indices: [0,9]
.
(order does not matter).
2 pointer one stand the first letter, the other go through
public IList<int> FindSubstring(string s, string[] words) { var res = new List<int>(); if(words.Count()==0) return res; var hashtable = new Dictionary<string,int>(); foreach(var word in words) { if(hashtable.ContainsKey(word)) hashtable[word] +=1; else hashtable.Add(word,1); } int wordSize = words[0].Length; for(int j =0;j<= s.Length - words.Count()*wordSize;j++) { var exist = new Dictionary<string,int>(); int i=j; int count =0; while(i<=(s.Length - wordSize)) { string newWord = s.Substring(i,wordSize); if(hashtable.ContainsKey(newWord)) { if(exist.ContainsKey(newWord)) { if(exist[newWord]<hashtable[newWord]) { exist[newWord]++; count++; i += wordSize; if(count ==words.Count()) { res.Add(j); break; } } else break; } else { exist.Add(newWord,1); count++; if(count ==words.Count()) { res.Add(j); break; } i += wordSize; } } else break; } } return res; }
以上是关于30. Substring with Concatenation of All Words的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 30 Substring with Concatenation of All Words
30. Substring with Concatenation of All Words
30. Substring with Concatenation of All Words
19.1.30 [LeetCode 30] Substring with Concatenation of All Words