原题链接
题解
分析
- 设答案为ans,那么大于ans,肯定不成立,小于ans成立,这符合二分答案的特点
- 然后使用unordered_set和substr进行查重
- substr:第一个参数为开始项,第二个参数为要截取的长度
代码
#include "iostream"
#include "string"
#include "unordered_set"
using namespace std;
int n;
string str;
bool check(int mid){
unordered_set<string>hash;
for(int i=0;i+mid<=n;i++){
string s=str.substr(i,mid);
if(hash.count(s))return false;
hash.insert(s);
}
return true;
}
int main(){
cin>>n>>str;
int l=1,r=n;
while (l<r){
int mid=(l+r)>>1;
if(check(mid))r=mid;
else l=mid+1;
}
cout<<r;
}
标签:set,int,mid,哈希,ans,字符串,include,unordered,acwing
From: https://www.cnblogs.com/ChengMao/p/17124936.html