笔试时间:2023年9月5日 秋招  第一题  题目:算式求解  要开发一款教育类App,帮助幼儿在识数阶段做一百以内自然数[0.99]的加减法。屏慕上会显示“1”“2”“3”“4””“5”“6”“7”“8”“9”“0”“+”“-”“=”这些按钮,用户在按了若工按钮之后,如果按了“=”,则会把按“=”之前的字符串作为一个算式,计算结果,中间结果或最后结果可以为负数。  输入描述  输入为一个字符串,形如“23+86-6+37+24-8-13”。输入字符串中保证:  1.不会包含除“1”“2”“3”“4”“5”“6”“7"8”“9"“0”“+"“="之外的字符  2.长度不为0  3.不以“+”或“-”开始,不以“+"或“-”结束  4.不会出现连续两个或两个以上"+"  5.不会出现连续两个或两个以上"-"  6."+""-"不会相邻  7.操作数为范围为[0,99]  8.一定包含运算符 (“+”或“-”)  输出描述  算式结果,一个整数。  样例输入     1+2+99-10-10    样例输出     82    参考题解  参考逆波兰表达式的做法  C++:  #include <iostream>#include <string>using namespace std;using ll = long long;int main() {    string expression;    cin >> expression;    int length = expression.size();    ll result = 0;    for (int i = 0; i < length; ++i) {        int sign = 1;        if (expression[i] == '-') {            sign = -1;            ++i;        } else if (expression[i] == '+') {            ++i;        }        int j = i;        while (j < length && isdigit(expression[j])) {            ++j;        }        int number = stoi(expression.substr(i, j - i));        result = result + sign * number;        if (j == length) {            break;        }        i = j - 1;    }    cout << result;    return 0;}  Java:[此代码未进行大量数据的测试,仅供参考]  import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        String s = scanner.next();        int n = s.length();        long ans = 0;        for (int i = 0; i < n; ++i) {            int symbol = 1;            if (s.charAt(i) == '-') {                symbol = -1;                ++i;            } else if (s.charAt(i) == '+') {                ++i;            }            int j = i;            while (j < n && Character.isDigit(s.charAt(j))) {                ++j;            }            int m = Integer.parseInt(s.substring(i, j));            ans = ans + symbol * m;            if (j == n) {                break;            }            i = j - 1;        }        System.out.println(ans);    }}  Python:[此代码未进行大量数据的测试,仅供参考]  s = input()n = len(s)ans = 0i = 0while i < n:    symbol = 1    if s[i] == '-':        symbol = -1        i += 1    elif s[i] == '+':        i += 1    j = i    while j < n and s[j].isdigit():        j += 1    m = int(s[i:j])    ans = ans + symbol * m    if j == n:    
点赞 2
评论 0
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务