我有一个字符串,例如“big baddog”,如何获得包含所有可能的单词/短语组合的 string[] 数组?
所以,我想返回“big”,“bad”,“dog”,“big bad”,“baddog”和“big baddog” - 因此必须尊重原始字符串中单词的顺序。
这是可以用正则表达式完成的事情吗?
我认为这是一个递归解决的好问题。我的看法:
public static String[] findWords(params string[] args)
{
if (args.Count() == 0)
{
return new String[] { "" };
}
else
{
String[] oldWords = findWords(args.Skip(1).ToArray());
String[] newWords = oldWords.Where(word => word == "" || word.Split(new String[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0] == args[1])
.Select(word => (args[0] + " " + word).Trim()).ToArray();
return oldWords.Union(newWords).ToArray();
}
}
A findWords("big", "bad", "dog")
返回您的短语列表。
Edit:编辑为仅包含连续短语。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)