c_cpp 由最大不同字符组成的最小子字符串的长度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 由最大不同字符组成的最小子字符串的长度相关的知识,希望对你有一定的参考价值。
//https://www.geeksforgeeks.org/smallest-window-contains-characters-string/
#include<iostream>
using namespace std;
int func (string s) {
int n= s.length();
int m[256]= {0};
int d_count= 0;
for (int i=0;i<n;i++) {
m[s[i]]++;
if (m[s[i]]== 1)
d_count++;
}
int maxi=n+2, count= 0, start= 0, sIndex;
int pat[256]= {0};
for (int i=0;i<n;i++) {
pat[s[i]]++;
if (pat[s[i]]== 1)
count++;
if (count== d_count) {
while (pat[s[start]]>1) {
if (pat[s[start]]> 1)
pat[s[start]]--;
start++;
}
int curr= i-start+ 1;
if (maxi>curr) {
maxi= curr;
sIndex= start;
}
}
}
string str= s.substr (sIndex, maxi);
cout<< str<< " ";
return maxi;
}
int main()
{
/*2
aabcbcdbca
aaab*/
int t;
cin>>t;
cin>> ws;
while (t-- >0) {
string s;
getline (cin, s);
cout<< func (s)<< endl;
}
return 0;
}
以上是关于c_cpp 由最大不同字符组成的最小子字符串的长度的主要内容,如果未能解决你的问题,请参考以下文章
算法题-第K个小子串
406. 和大于S的最小子数组
LeetCode——不同字符的最小子序列/去除重复字母
每日一练(day05)
[程序员代码面试指南]字符串问题-找到包含串b所有字符的最小子串
c_cpp 按字典顺序排列的最小子串,以元音开头,以辅音结束