查找字符串中字符不重复的最大子串(C/C++)
2010-05-11 15:40
399 查看
#include <stdio.h> #include <stdlib.h> #include <string.h> //说明:查找字符串中字符间不同的最大子串 //参数:*string 待搜索字符串 // *rst 存放找到的最大子串 //返回:找到最大子串长度 int findMaxSubstring(const char *string, char *rst){ char *p = (char*)string; char *substring = p; //当前子串 int length = 0; //当前子串长度 char *maxSubstring = substring; //已经找到的最大子串 int maxLength = 0; //已经找到的最大子串长度 // 遍历字符串过程中,字符最后一次出现的位置 char* position[256]; memset(position, 0, 256 * sizeof(char *)); char ch; // while ((ch = *p) != '/0') { if (position[ch] < substring){ //字符在当前子串首次出现 length++; if (length > maxLength){ maxSubstring = substring; maxLength = length; } } else { substring = position[ch] + 1; //当前子串从该字符上次出现的位置后面开始 length = p - position[ch]; } position[ch] = p; // 保存字符的位置 p++; } // 拷贝找到的最大子串 strncpy(rst, maxSubstring, maxLength); rst[maxLength] = '/0'; return maxLength; }
相关文章推荐
- 字符串中没有重复的字符最大子串
- leetcode-java.T003_LongestSubstringWithoutRepeatingCharacters 给定一个字符串,找字符中的最大非重复子串
- 查找一个字符串中最大重复子串(C语言版)
- 查找字符串中最长无重复字符的子串
- 查找字符串中字符间不同的最大子串
- 查找字符串中最长重复字符的子串
- 字符串中不重复连续字符子串的长度最大值
- lc#3求字符串中不包含重复字符的最大长度子串
- 找出字符串中最大子串的长度(要求子串中的字符不重复)
- java 获得字符串中最大重复子串长度
- [leetcode]获取字符串中字符不重复的最长子串的长度
- 求字符串中最长无重复字符的子串
- 求字符串中重复字符的最大间隔
- 查找两个字符串的最大相同子串
- 查找两个字符串中的最大公共子串
- C++实现一个栈,出栈,入栈,返回最小值 时间复杂度为O(1),查找字符串中第一个重复出现的字符
- 求字符串中不含重复字符的最长子串
- C++ 查找字符串中的子串,截取子串前的所有字符
- 最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串