查找字符串中最长子串

查找字符串中最长子串,例如“I love OC”最长子串为“love”

 1 void findMaxLengthSubstr1(char *src)
 2 {
 3     char *start = src;
 4     char *end = src;
 5     unsigned int maxLength = 0;
 6     unsigned int tempLength = 0;
 7     // 此处子串长度不能超过100
 8     char maxStr[100] = "0";
 9 
10     if (src == NULL)
11     {
12         return ;
13     }
14     while (*end != '\0')
15     {
16         while(*end != ' ')
17         {
18             // 到了字符串结尾处则也算是一个子串的结束必须跳出循环
19             if (*end == '\0')
20             {
21                 break;
22             }
23             tempLength++;
24             end++;
25         }
26 
27         // 判断空格之前单词长度是否大于记录的最大长度
28         if(maxLength < tempLength)
29         {
30             maxLength = tempLength;
31             // 只能存储长度小于100的 否则直接退出,
32             // 原则可以不支持,但必须保证程序没有异常不会挂机
33             if (maxLength < 100)
34             {
35                 strncpy(maxStr,start,maxLength);
36             }
37             else
38             {
39                 printf("The substr too length");
40                 return;
41             }
42         }
43         // 无论长度是否大于maxLength只要到了间隔符都要指向空格符的下一个位置重新统计
44         end++;
45         start = end;
46         // 临时长度记录值清空,记录下一个子 串的长度
47         tempLength = 0;
48     }
49     printf("maxstr %s\n",maxStr);
50     return ;
51 }
52  

 

转载于:https://www.cnblogs.com/jianghg/p/4495048.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
查找字符串最长的数字子串可以通过编程实现。可以使用两种方法:一种是Python实现,另一种是C语言实现。Python实现可以使用字典来存储所有的数字子串,然后找到最长的数字子串并输出。C语言实现可以使用双重循环来查找数字子串,找到最长的数字子串并输出。具体实现方法可以参考以下引用内容。 引用: 解题思路:子串是原字符串的一段连续的字符,首先,共有字符串的长度一定是小于等于最短字符串的,然后判断最短字符串各个子串是否在长字符串内,相同长度的共有子串可能有多个,最长的共有子串也可能有多个,共有子串是唯一的,子串长度是可能相同的,可以创建一个字典,键为子串,值为子串长度,然后需要一个由值键的函数,输入特定长度取对应的子串,一个长度值可能对应多个键。 示例代码: x=input("第一个字符串是:") y=input('第二个字符串是:') if len(x)>len(y): x,y=y,x L=len(x) s=dict() flag=False for i in range(L,0,-1): for j in range(L-1): if i-1>j: flag=x[j:i] in y if flag==True: s[x[j:i]]=len(x[j:i]) #获得特定字符长度的共有子串函数,包括所有特定字符长度的共有子串 def get_key(val): target=list() for key,value in s.items(): if val == value: target.append(key) return target print('两个字符串共有的最长子串是:',get_key(max(s.values()))) 引用: 编程要:实现查找字符串最长数字子串的长度,并将其输出(可以改进:用while实现运行效率高) 示例代码: #include<stdio.h> #include<string.h> #define MAX_SIZE 1000 void search_numstr(char* str) { int i; int j; int x; int y; int count=0,len=0; char str2[MAX_SIZE]={0}; for(i=0;(str+i) != '\0';i++) { for(j=0;(str+i+j)>='0'&&*(str+i+j)<='9';j++) { count++;//当前数字子串的长度 } if(len<count)//如果找到了更长的数字子串 { len =count; for(x=0;x<len;x++)//每次都进行覆盖,留下最后最长的数字子串 { *(str2+x) = *(str+x+i); } *(str2+len) = '\0'; } count = 0; } printf("%d\n",len); for(x=0;x<len;x++) { printf("%c",*(str2+x)); } printf("\n"); } 相关问题: 1. 如何查找字符串的所有数字子串? 2. 如何查找字符串最长字母子串? 3. 如何将字符串的数字子串转换为整数?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值