大家好这里是清隆学长 ,一枚热爱算法的程序员
ACM金牌️团队 | 编程一对一辅导
✨ 本系列打算持续跟新华为OD-D卷的三语言AC题解
感谢大家的订阅➕ 和 喜欢 和手里的小花花
最新华为OD机试目录: https://www.nowcoder.com/discuss/636153620743897088?sourceSSR=users
字符串中整数求和(100分)
评测功能需要 =>订阅专栏<= 后联系清隆解锁~
给定一个只包含小写英文字母和数字的字符串 ,请计算出 中所有整数的最小和。其中,合法的整数包括以下两种情况:
输入为一行,包含一个字符串 。
输出一行,为 中所有整数的最小和。
bb1234aa
10
字符串中只有一个整数 ,因此最小和为 。
bb12-34aa
-31
1 + 2 - 34 = -31
我们可以从左到右扫描字符串,遇到数字时累加到结果中,遇到负号时将后面的负数减去。具体做法是使用两个指针 和 , 指向当前字符, 指向负数的末尾。每次遇到负号时,将 移动到负数的末尾,将负数转换为整数后减去即可。
def soln(s):
res = 0
n = len(s)
i = 0
while i < n:
if s[i].isdigit():
res += int(s[i])
elif s[i] == '-':
j = i + 1
while j < n and s[j].isdigit():
j += 1
res -= int(s[i+1:j])
i = j - 1
i += 1
return res
s = input()
print(soln(s))
import java.util.Scanner;
public class Main {
public static long calculateSum(String input) {