2744:子串

strstr

严格区分大小写

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
	char str[]="abc123";
	char str2[] = "123";
	char str3[] = "1"; 
	strrev(str);
	printf("%s\n",str);
	//输出》》321cba
	printf("%d\n",strstr(str,str2));//失败返回null; 
	//输出》》0 
	printf("%s",strstr(str,str3));//成功返回父串 从第一次出现的位置开始的char* 
	//输出》》1cba 
}

strcasestr

跟strstr一样使用,但是不区分大小写

strrev

对字符串进行反序,返回是char*指针,传进去的字符串也会改变
有的编译器不支持strtrv函数

char * my_strrev(char *str)
{
   char *right = str;
   char *left = str;
   char ch;
   while (*right)  {
		right++;
   }
   right--;
   while (left < right)
   {
       ch = *left;
        *left++ = *right;
        *right-- = ch;
   }
   return(str);
}

strncpy

char *strncpy(char *dest, const char *src, int n)
把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。

AC代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char * my_strrev(char *str)
{
   char *right = str;
   char *left = str;
   char ch;
   while (*right)  {
		right++;
   }
   right--;
   while (left < right)
   {
       ch = *left;
        *left++ = *right;
        *right-- = ch;
   }
   return(str);
}

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

int searchMax(char* source){
	int sublen = strlen(source);
	int len = strlen(source);
	char substr[101],revstr[101];
	int found;
	while(sublen>0){//从尾巴减 
		//从头减
		for(int i=0;i<=(len-sublen);i++){
			found = 1;
			strncpy(substr,source+i,sublen);
			strncpy(revstr,source+i,sublen);
			substr[sublen]='\0';
			revstr[sublen]='\0';
			my_strrev(revstr);
			//比较 
			for(int j=0;j<n;j++){
				if(strstr(str[j],substr)==0 && strstr(str[j],revstr)==0){
					found = 0;
					break;
				}
			}
			if(found==1)
				return (sublen);
		}
		sublen--;
	}
	return 0;
}

int main(){
	int t,answer;
	char minStr[101];
	scanf("%d",&t);
	for(int i=0;i<t;i++){
		scanf("%d",&n);
		int min=101;
		for(int j=0;j<n;j++){
			//输入
			scanf("%s",str[j]);
			//找最小串
			if(strlen(str[j])<min){
				strcpy(minStr,str[j]);
				min=strlen(str[j]);
			}
		}
		//找最大子串
		answer = searchMax(minStr);
		printf("%d\n",answer); 
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/u013129143/article/details/82844939