1029 子串

现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。


#include<stdio.h>

#include<string.h>


int t,n;
char str[100][101];


int searchMaxSubString(char* source){
int subStrLen = strlen(source);
int sourceStrLen = strlen(source);
int i,j;
bool foundMaxSubStr;
char subStr[101],revSubStr[101];


while(subStrLen > 0)
{
for( i = 0; i <= sourceStrLen - subStrLen; i++)
{
strncpy(subStr,source + i,subStrLen);
strncpy(revSubStr,source + i,subStrLen);
subStr[subStrLen] = revSubStr[subStrLen] = '\0';
strrev(revSubStr);
foundMaxSubStr = true;
for(j = 0 ;  j < n; j++)
if(strstr(str[j],subStr) == NULL && strstr(str[j],revSubStr) == NULL)
{
foundMaxSubStr = false;
break;
}
if(foundMaxSubStr) return(subStrLen);
}
subStrLen--;
}
return(0);
}


int main()
{
int i,minStrLen,subStrLen;
char minStr[101];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
minStrLen = 100;
for(i = 0; i < n;i++)
{
scanf("%s",str[i]);
if(strlen(str[i]) < minStrLen)
{
strcpy(minStr,str[i]);
minStrLen = strlen(minStr);
}
}
subStrLen = searchMaxSubString(minStr);
printf("%d\n",subStrLen);
}
return 0;

}



心得: 

搜索到x0的每个子字符串,并且根据字符串的长度从倡导段开始判断,不要遗漏了任何子字符串。

确保代码简洁,高效:

strlen:计算字符串的长度。

strncpy:复制字符串的子串。

strcpy: 复制字符串。

strstr:在字符串中寻找子字符串。

strrev:对字符串进行反序。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值