internal IDictionary<int, List<int>> GetDag(string sentence)
{
var dag = new Dictionary<int, List<int>>();
var trie = WordDict.Trie;
var N = sentence.Length;
for (var k = 0; k < sentence.Length; k++)
{
var templist = new List<int>();
var i = k;
var frag = sentence.Substring(k, 1);
while (i < N && trie.ContainsKey(frag))
{
if (trie[frag] > 0)
{
templist.Add(i);
}
i++;
// TODO:
if (i < N)
{
frag = sentence.Sub(k, i + 1);
}
}
if (templist.Count == 0)
{
templist.Add(k);
}
dag[k] = templist;
}
return dag;
}