尺取法 最短的包含字串

2021-08-22 13:34:36 字數 911 閱讀 7011

給出乙個字串,求該字串的乙個子串s,s包含a-z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a-z中的全部字母,則輸出no solution。

input:

第1行1個字串。字串的長度 <= 100000。

output:

輸出包含a-z的最短子串長度。如果沒有符合條件的子串,則輸出no solution。 

示例:

input1:

bvcabcdeffghijklmmnopqrstuvwxzyzz

output1:

input2:

qqwertyuiopasdfghjklzxcvbnm

output2:

思想:基本尺取法(滑動視窗),

整個過程分為4步:

1.初始化左右端

2. 右端不斷向前滑動,直至滿足條件

3.如果第二步無法滿足條件,則終止,否則更新結果

4.左端擴大1,繼續第二步

適用:在乙個序列中,求滿足條件連續子串行的最值(最小區間,或最大區間)

**如下:

#include using namespace std;

int main()

else

}if(cnt==26) // 滿足a~z 左端滑動

}if(ans == 1e6)

cout<<"no solution"

cout

}

51NOD 1127 最短的包含字串 尺取法

1127 最短的包含字串 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 收藏關注 給出乙個字串,求該字串的乙個子串s,s包含a z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a z中的全部字母,則輸出no soluti...

51NOD 1127 最短的包含字串 尺取法

1 秒131,072 kb 20 分 3 級題 給出乙個字串,求該字串的乙個子串s,s包含a z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a z中的全部字母,則輸出no solution。收起第1行,1個字串。字串的長度 100000。輸出包含a z的最...

51nod 1127 最短的包含字串(尺取法)

給出乙個字串,求該字串的乙個子串s,s包含a z中的全部字母,並且s是所有符合條件的子串中最短的,輸出s的長度。如果給出的字串中並不包括a z中的全部字母,則輸出no solution。輸入 第1行,1個字串。字串的長度 100000。輸出 輸出包含a z的最短子串s的長度。如果沒有符合條件的子串,...