题目描述
1.输入字符串s输出s中包含所有整数的最小和,说明:1字符串s只包含a~z,A~Z,+,-,
2.合法的整数包括正整数,一个或者多个0-9组成,如:0,2,3,002,102
3.负整数,负号开头,数字部分由一个或者多个0-9组成,如-2,-012,-23,-00023
输入描述
包含数字的字符串
输出描述
所有整数的最小和
示例1
输入: bb1234aa输出: 10说明: 1+2+3+4=10
示例2
输入: bb12-34aa输出: -31说明: 1+2-34=-31
作者:code5bug
链接:求字符串所有整数最小和 - 华为OD统一考试(D卷)_牛客网
来源:牛客网
一、问题分析
首先读题,仔细看描述中的内容,发现需求是
1.输入字符串s,输出s中包含的所有整数的最小和,
2.字符串s只包含a~z,A~Z,+,-,0-9
3.合法的整数包括正整数,由一个或者多个0-9组成,
4.负整数,负号开头,由一个或者多个0-9组成
5.输入描述:包含数字的字符串
6.输出描述:所有整数的最小和
二、解题思路
1.因为要求最小的和,所以正整数全都拆开变成个位数字
2.负整数则全都不拆开
三、具体步骤
使用的语言是C
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {char s[1000];scanf("%s", s);int len = strlen(s);int minsum = 0;for(int i = 0; i < len; i++) {if(isdigit(s[i])) {while(i < len && isdigit(s[i])){minsum += s[i] - '0';i++;}i--;} else if(s[i] == '-') {i++;if(i < len && isdigit(s[i])) {int tempn = 0;while(i < len && isdigit(s[i])) {tempn = tempn * 10 + s[i] - '0';i++;}minsum += tempn * (-1);}}}printf("%d\n", minsum);return 0;
}