51Nod1127 最小包含字符串

51Nod1127

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 const int inf = 0x3f3f3f3f;
 5 int vis[26];
 6 int main() {
 7     string s; cin >> s;
 8     int l = 0, r = 0, sum = 0, ans = inf;
 9     while (l <= r && r < s.size()) {
10         if (vis[s[r]-'A'] == false) sum++;
11         vis[s[r]-'A']++;
12         while (sum == 26) {
13             ans = min(ans,r-l+1);
14             if (vis[s[l]-'A'] == 1) sum--;
15             vis[s[l]-'A']--;
16             l++;
17         }
18         r++;
19     }
20     if (ans == inf) cout << "No Solution" << endl;
21     else cout << ans << endl;
22     return 0;
23 }

 

posted @ 2019-10-20 20:11  麻辣猪仔  阅读(152)  评论(0)    收藏  举报