最小包含兄弟子串的长度
2016-08-14 22:22
204 查看
str1 = “adabbca”; str2 = "abc";
str1中包含str2的子串有abbc,bca,其中bca为最终结果,返回3
View Code
str1中包含str2的子串有abbc,bca,其中bca为最终结果,返回3
// minLengthContain.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string> using namespace std; int minLength(const string& str1,const string& str2) { int len1 = str1.length(); int len2 = str2.length(); if(len1 <= 0 || len2 <= 0 || len1 < len2) return 0; //记账:str2 的字符看成是str1[left...right]欠的 int map[256]; for(int i = 0; i < 256;i++) map[i] = 0; //memset(map,0,256);//只能初始化new出来的内容 for(int i = 0;i < len2;i++) map[str2[i]]++; int left = 0; int right = 0; int minLen = 100; int match = len2; while(right < len1) { //str1还账,可能多还但是也通过map记着 map[str1[right]]--; if(map[str1[right]] >=0) match--;//str1还过一次之后,此处还>=0,那么该次还账为有效 if(match == 0) { while(map[str1[left]] < 0) map[str1[left++]]++;//map为负,则为str1多还的,收回来 //遇到不为负,结算。 minLen = min(minLen,right-left+1); match++;//同理进行以后的计算,更新minLen map[str1[left++]]++; } right++; } return minLen == 100 ? 0 : minLen; } int _tmain(int argc, _TCHAR* argv[]) { string str1 = "adabbca"; string str2 = "acb"; cout<<minLength(str1,str2)<<endl; system("pause"); return 0; }
View Code
相关文章推荐
- 字符串问题---最小包含子串的长度
- 最小包含子串的长度
- 最小覆盖子串的长度
- tyvj 1170 0/1字符串问题 字符串中仅包含0和1两个字符;②字符串的长度为n;③字符串中不含有三个连续的相同子串 搜索
- 面试题-求一个串包含另一个串的最大子串长度的解法
- Minimum Window Substring, 包含子串的最小窗口,双指针
- lc#3求字符串中不包含重复字符的最大长度子串
- hdu2870子串长度子串最小数
- 计算a、b字符串的不连续公共子串的长度(包含c字符串) ----hdu4681
- Periodic Strings最小循环子串的长度
- LeetCode 3. Longest Substring Without Repeating Characters--不包含重复字符的最长子串长度
- 一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化
- 一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化
- 求一个只包含0,1,-1的数组,和为0的最长子串的长度
- 判断字符串及其子串是否是包含回文字,如果包含输出长度。
- 找出此产品描述中包含N个关键字的长度最短的子串
- 输入一个数,把它作为一个串,判断其中是否包含长度>=2的相同子串,如 果包含,返回1,不包含,返回0
- Longest Substring Without Repeating Characters 字符串中最长的无重复子串长度
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。
- [转载]以太网的最小帧长度64B是如何计算出来的?