**1113 - 隐藏的最大整数 -- string 字符串
**来源:东方博宜oj oj.czos.cn
*解法一:(自己写的,复杂)
#include<bits/stdc++.h>
using namespace std;
string s,ma="";
int msize=0;
int k=0,t=0,p=0,p1[105];
string a[105];
bool f[105];
int main()
{
getline(cin,s);
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9') f[i]=true;
else f[i]=false;
}
for(int i=0;i<s.size();i++)
{
if(f[i]==true&&f[i-1]==false)
{
k=0;
p1[++t]=i;
while(f[i+k])
{
a[t]+=s[i+k];
++k;
}
i+=k;
}
}
for(int i=1;i<=t;i++)
{
if(a[i].size()>msize||(a[i].size()==msize&&a[i]>ma))
{
msize=a[i].size();
ma=a[i];
p=p1[i];
}
}
cout<< p+1<<endl;
return 0;
}
*解法二:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s,w="";
string ma="";
cin>>s;
for(int i=0;i<s.size();i++)
{
if(isdigit(s[i]))
{
w=w+s[i];
if(i==s.size()-1||!isdigit(s[i+1]))
{
if(w.size()>ma.size()||(w.size()==ma.size()&&w>ma))
{
ma=w;
}
w="";
}
}
}
cout<< s.find(ma)+1;
return 0;
}
*解法三:双指针算法
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int p;
string maxn="";
for(int i=0;i<s.size();i++)
{
int j=i;
string k="";
while(s[j]>='0'&&s[j]<='9')
{
k=k+s[j];
j++;
}
if(k.size()>maxn.size()||(k.size()==maxn.size()&&k>maxn))
{
maxn=k;
p=i+1;
}
i=j;
}
cout<<p;
return 0;
}