NWAFU--oj习题--1508--变位词统计

题目描述

在这里插入图片描述

完整代码如下

void lowcase(char *s)
{
	for(;*s!='\0';s++)
	{
		if(*s>='A'&&*s<='Z')
		{
			*s=*s+'a'-'A';
		}
	}
}
int areAnagrams(const char *word1, const char *word2)
{
	int i,j,m=1,n;
	char ch;
	char w1[255],w2[255];
	strcpy(w1,word1);
	strcpy(w2,word2);

	lowcase(w1);
	lowcase(w2);
	char *a,*b;
	a=w1;
	b=w2;
	n=strlen(word1);
	
	for(i=0;i<n-1;i++)
	{
	    for(j=0;j<n-i-1;j++)
		{
		   if(*(a+j)>*(a+j+1))
		   {
		   	 ch=*(a+j);
		   	 *(a+j)=*(a+j+1);
		   	 *(a+j+1)=ch;
		   }	
		}	
	}

	for(i=0;i<n-1;i++)
	{
	    for(j=0;j<n-i-1;j++)
		{
		   if(*(b+j)>*(b+j+1))
		   {
		   	 ch=*(b+j);
		   	 *(b+j)=*(b+j+1);
		   	 *(b+j+1)=ch;
		   }	
		}	
	}
	a=w1;
	b=w2;
  
    while(*a!='\0') 
    {
	  if(*a!=*b)
      {
    	m=0;
    	break;
	  }
	  a++;
	  b++;
    }
	return m;
}
int countAnagrams(const char *test, const char *word)
{
	
	int cnt=0,n1,n2,m;
	char c,d[255],e[255],*p;
	p=e;
	strcpy(e,test);
	n1=strlen(test);
	n2=strlen(word);
	while((strlen(p))>=n2)
	{
		c=*(p+n2);
		*(p+n2)='\0';
		strcpy(d,p);	   
		m=areAnagrams(d,word);
			*(p+n2)=c;
		if(m==1)
		{
			cnt++;
			p=p+n2;
		}		
		else
		{
			p++;
		}
	
		
	}

	return cnt;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值