题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
#include <bits/stdc++.h>
using namespace std;
//双指针法
int main() {
string s;
while(cin>>s){
int maxm=0;
int i=0;//首指针
vector<int> index;
while(i<s.size()){
if('0'<=s[i] && s[i]<='9'){
int j=i+1;//尾指针
while('0'<=s[j] && s[j]<='9')
j++;
//如果和和当前最大长度相等,纪录字串第一个字符
if((j-i)==maxm)
index.push_back(i);
//如果大于当前最大长度,则更新
if((j-i)>maxm){
maxm=j-i;
index.clear();//清空之前的记录
index.push_back(i);
}
i=j+1;//调过该字串,开始下一个字串
}
else
i++;
}
//输出
for(int h=0;h<index.size();h++){
for(int k=0;k<maxm;k++)
cout<<s[index[h]+k];
}
cout<<','<<maxm<<endl;
}
return 0;
}
using namespace std;
//双指针法
int main() {
string s;
while(cin>>s){
int maxm=0;
int i=0;//首指针
vector<int> index;
while(i<s.size()){
if('0'<=s[i] && s[i]<='9'){
int j=i+1;//尾指针
while('0'<=s[j] && s[j]<='9')
j++;
//如果和和当前最大长度相等,纪录字串第一个字符
if((j-i)==maxm)
index.push_back(i);
//如果大于当前最大长度,则更新
if((j-i)>maxm){
maxm=j-i;
index.clear();//清空之前的记录
index.push_back(i);
}
i=j+1;//调过该字串,开始下一个字串
}
else
i++;
}
//输出
for(int h=0;h<index.size();h++){
for(int k=0;k<maxm;k++)
cout<<s[index[h]+k];
}
cout<<','<<maxm<<endl;
}
return 0;
}