Пример #1
0
            private void WordBreak(int pos)
            {
                if (dict.ContainsKey(pos))
                {
                    return;
                }

                var result = new List <string>();

                for (int i = pos; i < s.Length; ++i)
                {
                    var cad = s.Substring(pos, i - pos + 1);
                    if (trie.ContainsWord(cad))
                    {
                        if (i == s.Length - 1)
                        {
                            result.Add(cad);
                        }
                        else
                        {
                            WordBreak(i + 1);
                            if (dict.ContainsKey(i + 1) && dict[i + 1].Count > 0)
                            {
                                result.AddRange(dict[i + 1].Select(ii => string.Format("{0} {1}", cad, ii)));
                            }
                        }
                    }
                }
                dict[pos] = result;
            }