rt,校内题,总是 91 分,真的是佛掉了……
题目描述
今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏! 玩法很简单,就是把藏在一个长长的字符串中(任何两个人都不会并排藏在一起)数字伙伴找出来。而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……
游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……
如果你是“1”,你能写个程序来解决这件事情么?
输入
只有一个字符串,这里面藏有很多的整数小伙伴。
输出
只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。
样例输入
*((*-a32AB342+//32143abAA
样例输出
17
提示
这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。
我的 91 分代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<map>
using namespace std;
#define ll long long
bool bigger(string a,string b){
if (a.length()!=b.length()) return a.length()>b.length();
return a>b;
}
int main(){
string a,num="",ansn="0";
int ansk=-1,k;
getline(cin,a);
a+=' ';
for (int i=0;i<min(256,int(a.length()));i++){
if (a[i]>='0' && a[i]<='9'){
num+=a[i];
if (!(a[i-1]>='0' && a[i-1]<='9')) k=i+1;
}
else{
if (bigger(num,ansn)){
ansn=num;ansk=k;
}
num="";
}
}
cout<<ansk;
return 0;
}
真的不知道错哪儿了,求助各位大佬,谢谢!!!