36 lines
1.1 KiB
C#
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;
|
|
}
|
|
} |