51NOD 1127 最短的包含字串

2021-07-14 12:28:03 字數 954 閱讀 3061

傳送門

給出乙個字串,求該字串的乙個子串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 輸出包...