傳送門
給出乙個字串,求該字串的乙個子串s,s包含a-z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a-z中的全部字母,則輸出no solution。
input
第1行,1個字串。字串的長度 <= 100000。
output
輸出包含a-z的最短子串長度。如果沒有符合條件的子串,則輸出no solution。
input示例
bvcabcdeffghijklmmnopqrstuvwxzyzz
output示例
28解題思路:
借助尺取法。
my code:
#include
#include
#include
#include
using namespace std;
const int maxn = 1e5+5;
char
str[maxn];
intsum[30];
int main()
bool ok = 0;
for(int i=0; i<26; i++)
if(!sum[i])
if(ok)
continue;
memset(sum, 0, sizeof(sum));
int l = 0, r = 0, cnt = 0, min = 9999999;
while(r26)
sum[str[r]-'a']++;
r++;
}while(sum[str[l]-'a'] > 1)
if(cnt == 26)
min = min(min, r-l);
cnt--;
sum[str[l++]-'a']--;
}cout0;}
51nod1127 最短的包含字串
給出乙個字串,求該字串的乙個子串s,s包含a z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a z中的全部字母,則輸出no solution。收起第1行,1個字串。字串的長度 100000。輸出包含a z的最短子串s的長度。如果沒有符合條件的子串,則輸出n...
51Nod1127 最短的包含字串
給出乙個字串,求該字串的乙個子串s,s包含a z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a z中的全部字母,則輸出no solution。二分。include include include include include include includ...
51Nod 1127 最短的包含字串
51nod 1127 最短的包含字串 給出乙個字串,求該字串的乙個子串s,s包含a z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a z中的全部字母,則輸出no solution。input 第1行,1個字串。字串的長度 100000。output 輸出包...