题目描述:
提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回 0 。
简单数学表达式只能包含以下内容:
0-9数字,符号+-*
说明:
1、所有数字,计算结果都不超过long
2、如果有多个长度一样的,请返回第一个表达式的结果
3、数学表达式,必须是最长的,合法的
4、操作符不能连续出现,如 +--+1 是不合法的
输入描述:
字符串
输出描述:
表达式值
示例1:
输入
1-2abcd
输出
-1
说明:最长合法简单数学表达式是"1-2",结果是 -1
C++源码:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;long long calculateExpression(const string& expr) {long long result = 0, num = 0, result_1=1,num_1=1;char op = '+'; // 初始化操作符为加,表示开始的新数字应累加到结果上for (char ch : expr) {if (isdigit(ch)) {num = num * 10 +