我有一个模式的长度< = 100,和一组单词< 20我想找到包含模式字符的排列的单词的数量,例如,如果模式是“猫”,而单词的集合是“ ttact tract tattc“的输出应该是两个。 ttact:相匹配,因为它包含TAC 道:火柴,因为它包含的行为 tattc:剂量无法比拟的比赛如何找到一个单词是否包含模式字符的排列?
这里是代码
public static void main(String[] args) {
String pattern="cat";
char []p=pattern.toCharArray();
Arrays.sort(p);
String sen="ttact tract tattc";
for (char c : p)
System.out.println(c);
String [] words=sen.split(" ");
if (pattern.length()==1)
{
String [] len=sen.split(pattern);
}
else
{
int count=0;
for (String word :words)
{
String found="";
for (int i=0;i<word.length();i++)
{
if (pattern.indexOf(word.charAt(i))!=-1)
{
found+=word.charAt(i);
if (found.length()==pattern.length())
{
char f [] = found.toCharArray();
Arrays.sort(f);
if (Arrays.equals(f, p))
{
count++;
found="";
}
else
found="";
}
}
else
{
found="";
}
}
}
System.out.println(count);
}}}
请在描述中更加精确地描述你想达到的目标。 'tract'这个词也包含了'cat'的排列,所以它也应该算数。 – Henry 2014-10-18 06:43:30
提供更多示例并阐明您的逻辑。 – anubhava 2014-10-18 06:49:06
是的它是剂量计数,但tattc没有;因为它不包含连续排列的猫 – QuakeCore 2014-10-18 06:49:44