1 条题解
-
1
双指针
#include <bits/stdc++.h> using namespace std; unordered_map<char,int> um; int maxn,minl; int main() { string s; cin >> s; int l=0,r=0; while(l<=r && r<s.length()) { if(um[s[r]]) { um[s[l]]--; l++; } else { um[s[r]]++; r++; } if(r-l>maxn) { maxn = r-l; minl = l; } } for(int i = minl;i<minl+maxn;i++) cout << s[i]; return 0; }
s = input() maxn,minl = 0,0 dic = {} l,r = 0,0 for i in s: dic[i] = 0 while l<=r and r<len(s): if dic[s[r]]: dic[s[l]]-=1 l+=1 else: dic[s[r]]+=1 r+=1 if r-l>maxn: maxn = r-l minl = l print(s[minl:minl+maxn])
- 1
信息
- ID
- 769
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 263
- 已通过
- 111
- 上传者