问题标题: 酷町堂:2827求思路

0
0
已解决
沈峻宇
沈峻宇
资深天翼
资深天翼
题目描述 Description
给出一个字符串,仅由字母(大写或小写)和数字组成。试找出并输出其中最大的一个数字。

输入描述 Input Description
一个字符串

输出描述 Output Description
这个字符串中最大的数字

样例输入 Sample Input
abc123d123456789012345678901f
样例输出 Sample Output
123456789012345678901
数据范围及提示 Data Size & Hint
字符串中的数字范围可能会超过long long

求解!1200经验我要拿下!

沈峻宇在2021-01-05 12:28:14追加了内容

@龙舟 @李瑞曦 


0
已采纳
张帆
张帆
中级天翼
中级天翼

循环遍历此字符串,判断当前字符是不是数字,若是,

转换为int类型:

int pos=s[i];

然后ans取最大值:

ans=max(ans,pos);

最后输出ans。

张帆在2021-01-05 12:52:09追加了内容

说错了:

 

定义状态变量(bool)cmp,

循环遍历字符串s,

循环里面:

if(s[i]>='0'&&s[i]<='9'){
			a[cnt]=a[cnt]+s[i];
			cmp=false;
		} 
		else if(cmp==false){
			cnt++;
			cmp=true;
		}

注:a为string类型

此时sort,

cmp函数(不能定义为cmp,会重名)这样写:

bool t(string a,string b){
	if(a.length()!=b.length()) return a.length()<b.length();
	return a<b;
}

排序找最大

最后:

if(a[cnt].empty()){
		cout<<a[cnt-1];
	}
	else{
		cout<<a[cnt];
	}

(输出)

0
0
蔡辰夕
蔡辰夕
新手启示者
新手启示者

3211111111111111114234321111111111111111111111111111

我要回答