查找字符串中最长子串

查找字符串中最长子串,例如“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  
时间: 2024-10-14 00:31:13

查找字符串中最长子串的相关文章

查找字符串中最长无重复字符的子串

设定一个当前子字符串:tempString 设定一个保持最长无重复子串的数组:list 思路: 从第一个字符开始判断, 如果当前子串不包括当前的字符,则当前子串加入当前的字符成为新的当前子串, 如果当前子串包括当前的字符,判断当前字符在当前字符串中的位置,根据这个位置把字符串分成两个字符串,如果后面一个末尾加当前字符为新的当前子字符串,判断当前子串跟list数组中的子串长度,如果当前子串长,则清空list,把当前子串加入:如果相等,直接将当前子串加入list. 最后list的中的子字符串就是最长

查找字符串中最长重复字符的子串

temppos:记录子字符串开始的下标 list:存放重复的子字符串 public class RepeatString { private static void longestdupString(String s) { if (s == null || s.length() == 0) { return; } char temp = s.charAt(0); int temppos = 0; List<String> list = new ArrayList<String>()

查找字符串中相同连续字符串最多的子串,如果有两串长度相同取asc码 例如1233455 中是33

package test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; // 查找字符串中相同连续字符串最多的子串,如果有两串长度相同取asc码 例如1233455 中是33 /* 思路:新建一个map和字符数组,map中key为字符,value为连续字符个数:当第一次出现字符时,将字符存入m

字符串中连续出现最多的子串 &amp; 字符串中最长重复子串

字符串中连续出现最多的子串 & 字符串中最长重复子串 字符串中连续出现最多的子串 & 字符串中最长重复子串,这两个问题都可以用后缀数组来表示,至于后缀数组可以参考编程珠玑P156:后缀数组就是定义一个数组指针,分别指向字符串中的对应位置,如下: a b c a b c a b c d e .substr[0] b c a b c a b c d e ....substr[1] c a b c a b c d e .......substr[2] a b c a b c d e ......

Longest Substring Without Repeating Characters 字符串中最长的无重复子串长度

Longest Substring Without Repeating Characters Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the lengt

字符串中连续出现最多的子串 &amp;amp; 字符串中最长反复子串

字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀数组就是定义一个数组指针,分别指向字符串中的相应位置,例如以下: a b c a b c a b c d e .substr[0] b c a b c a b c d e ....substr[1] c a b c a b c d e .......substr[2] a b c a b c d e ....

获取两个字符串中最大相同子串

2.获取两个字符串中最大相同子串.第一个动作:将短的那个串进行长度一次递减的子串打印. "cvhellobnmtanop" "andefc" 思路: 1,将短的那个子串按照长度递减的方式获取到. 2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到! package tan; class Test { public static String getMaxSubString(String s1,String s2) { String max = "

找出一个字符串中最长重复次数的子字符串,并计算其重复次数

原题 找出一个字符串中最长重复次数的子字符串,并计算其重复次数.例如:字符串"abc fghi bc kl abcd lkm abcdefg",并返回"abcd"和2. 我的思路 为了方便表述,我们使用变量src作为原字符串,sub_str作为子字符串. 由于题目要求寻找至少重复2次的最长的子字符串,重点在于最长的子字符串,而不在于重复的最多次数.因此我们可以从长度最长的字符串入手,计算其重复次数.只要重复达到2次,即可返回该字符串. 显然长度最长的子字符串就是原串

【C】字符串的输入,求输入字符串中最长的单词

首先,基本目标很简单,就是利用C语言:编写一个函数,输入一行字符,将此行字符中的最长的单词输出. 代码如下: #include<stdio.h> void input(char s[]){ int i=0; for(int c;(c=getchar())!='\n';i++){ s[i]=c; } s[i]='\0';//读取完成,记得对这个字符数组封口 } char* findmax(char s[]){ int max=0,word_length=0,p=0,i=0;//这个p是用来记录最