Files
Leetcode/30. Substring with Concatenation of All Words/Solution.cs

36 lines
1.1 KiB
C#

public class Solution {
public IList<int> FindSubstring(string s, string[] words) {
var len = words[0].Length;
var allLen = len*words.Length;
var dict = new Dictionary<string, int>();
foreach(var word in words)
{
dict.TryAdd(word, 0);
dict[word]++;
}
var answer = new List<int>();
var dictClone = new Dictionary<string, int>(dict);
for(var i = 0; i < s.Length-allLen+1; i++)
{
var valid = 0;
foreach (var kvp in dictClone)
dictClone[kvp.Key] = dict[kvp.Key];
for(var j=i; j < i+allLen; j+=len)
{
var word = s[j..(j+len)];
if(dictClone.TryGetValue(word, out var count) && count > 0)
{
dictClone[word]--;
valid++;
}
else
{
break;
}
}
if(valid == words.Length)
answer.Add(i);
}
return answer;
}
}