前言
给定一个字符串,求连续字符最长子串,比如aaaacabbbbbbbc,输出七个b。(牛客上看到的面试手撕题,闲着没事实现了一下)
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
int main()
{
string s;
cin>>s;
int count=1;
unordered_map<char,int>umap;
umap[s[0]]=1;
for(int i=1;i<s.size();i++)
{
if(s[i]==s[i-1])
{
count++;
}
else{
auto it=umap.find(s[i-1]);
if(it!=umap.end())
{
it->second=max(it->second,count);
count=1;
}
else{
umap[s[i-1]]=count;
count=1;
}
}
if(i==s.size()-1)
{
umap[s[i]]=max(umap[s[i]],count);
}
}
int max=0;
char max_key;
for(auto it=umap.begin();it!=umap.end();it++)
{
if(it->second>=max)
{
max=it->second;
max_key=it->first;
}
}
string s1="";
for(int i=0;i<umap[max_key];i++)
{
s1+=max_key;
}
cout<<s1<<endl;
return 0;
}