有没有大佬能告诉我怎么做到遍历Y[i][s[j]],s[j]为字符型数组,这种遍历Y[i][ ]的一维数组求最小值怎么弄,[ ]里面代表的是任意字符。
#include<bits/stdc++.h>
using namespace std;
string s;
int k;
char a[11][50];
long b[11][50];
long z[11][50][100010];
long y[11][50];
long u[11][50];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>s>>k;
long e=0;
long f=100010;
long c=0;
long g=0;
long d=s.length();
for(int j=0;j<d;j++){
if(b[i][s[j]]==0){
c++;
z[i][s[j]][c]=j;
b[i][s[j]]++;
}
else{
c++;
z[i][s[j]][c]=j;
b[i][s[j]]++;
}
if(b[i][s[j]]==k){
e++;
g++;
y[i][s[j]]=j-z[i][s[j]][g];
u[i][e]=y[i][s[j]];
}
else if(b[i][s[j]]>k){
g++;
if(j-z[i][s[j]][g]<y[i][s[j]]){
y[i][s[j]]=j-z[i][s[j]][g];
}
}
}
for(int t=1;t<=e;t++){
f=(min(f,u[i][t]));
}
if(e==0){
cout<<-1<<endl;
}else{
cout<<f+1<<endl;
}
}
}
全部评论
(2) 回帖