基本上这个程序由另外两个程序组成。 第一部分找到子串的排列和 第二部分,找出给定String中所有排列的出现次数。 在大多数情况下,我没有获得所需的输出 如果有人能提供帮助,我会很高兴。谢谢。
这是程序..
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int appearanceCount(int input1,int input2,char* input3,char* input4)
{
int count=0,temp,i,j,k;
int no_of_permutations=1;
for(i=1;i<input1+1;i++)
{
no_of_permutations *= i;
}
int a = no_of_permutations/((input1-1));
for (i=0; i < a; i++)
{
for(j=0; j<input1-1; j++)
{
char temp;
temp=input3[j];
input3[j]=input3[j+1];
input3[j+1] = temp;
//printf("\n%s",input3);
char *temp_input4 = input4;
//Now I have got the permutation
//Finding the occurance
while(temp_input4 = (strstr(temp_input4, input3)) )
{
count++;
printf("\n%s -- %s -- %d",temp_input4,input3,count);
temp_input4++;
}
}
}
return count;
}
int main()
{
int output = 0;
int ip1;
scanf("%d", &ip1);
int ip2;
scanf("%d", &ip2);
char* ip3;
ip3 = (char *)malloc(512000 * sizeof(char));
scanf("\n%[^\n]",ip3);
char* ip4;
ip4 = (char *)malloc(512000 * sizeof(char));
scanf("\n%[^\n]",ip4);
output = appearanceCount(ip1,ip2,ip3,ip4);
printf("\n%d", output);
return 0;
}
我的值的预期输出 4 11 CADA ABRACADABRA
会 2
因为可以在字符串中找到的两个可能的序列是Acad和cadA
但我输出为0;
答案 0 :(得分:0)
尝试使用anagram搜索,然后它就能正常工作。