华为 · 字符串 · 算法编程题
华为 字符串 时限 1 秒 / 256 MB

题目描述

小红和小紫正在探索一座远古的高科技遗迹。在遗迹的核心区域,她们被一道闪烁着幽蓝色光芒的“能量平衡门”挡住了去路。
门上显示着一串复杂的能量传导公式,公式的末尾是一个固定的目标能量值。为了打开这扇门,小红必须向能量槽中注入精确数量的初始源能(用变量 x 表示)。
这个远古文明的书写习惯非常独特,它们在记录能量倍率时,常常会省略乘号。根据小紫的分析,公式的规则如下:
1. 等式左边包含变量 x 、非负整数、运算符 `+`、`*`、`(`、`)`。等式右边一定是一个固定的数,且可能是负数(即由数字字符组成,且可能包含'-'放在数字串开头)。
2. 隐式乘法规则:当数字、变量 x 或括号紧密相邻时,表示它们之间存在乘法关系。例如:
- `2(x+1)` 等同于 2 × (x+1)
- `x3` 等同于 x × 3
- `(x+1)2` 等同于 (x+1) × 2
- `2x` 等同于 2 × x
3. 公式是一个线性方程,即 x 的最高次幂为 1,且 x 在整个字符串中恰好出现一次,并且一定位于等号 `=` 的左侧。
现在,小红记录下了门上的那个字符串 s ,请你帮她计算出开启大门所需的初始源能 x 是多少。

输入输出

输入描述
输入一行,包含一个字符串 s ,表示门上显示的能量传导公式。
- 3 ≤ |s| ≤ 1000 (字符串长度在 5 到 1000 之间)。
- 题目保证解 x 是一个整数。
- 所有的中间计算过程及最终结果均在 64 位有符号整数(long long)范围内。
- 输入的字符串保证合法,且只包含题目描述中提到的字符。
输出描述
输出一个整数,表示满足公式的 x 的值。

样例共 2 组

样例 1 · 对于样例,我们需要找到一个 x ,使得等式左边计算结果为 79。 当 x = 10 时: 1. 最内层括号: 10 + 2 = 12 2. 乘以 3: 12 × 3 = 36 3. 加 1: 36 + 1 = 37 4. 乘以 2: 37 × 2 = 74 5. 加 5: 74 + 5 = 79 等式成立,故答案为 10。
输入
((x+2)*3+1)*2+5=79
输出
10
样例 2
输入
3x=6
输出
2

算法解析依据充分

考点:字符串

限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 元素值域:s ≤ 1e3(注意整数类型选择,避免溢出)
  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:字符串

本题切入点

解析带隐式乘法的线性方程:给数字/变量/括号之间补上乘号后展开求 x 的系数 a 与常数 b,解 ax+b=右值;注意展开括号时的符号与「x 只出现一次」。

按字符逐个处理,或利用字符串的前后缀性质加速匹配。

思路框架(字符串 通法 · 非本题专属)

  1. 明确操作对象是字符还是子串、是否需要保持原顺序。
  2. 子串问题常用双指针 / 滑动窗口;回文问题可用中心扩展或哈希。
  3. 多模式匹配考虑 Trie 或 KMP;只需计数则用哈希表统计字符频次。
  4. 注意字符集大小写敏感性与输入是否带引号。

实现要点:Python 切片 s[l:r+1] 取子串;注意字符串不可变,频繁拼接改用 list。

复杂度:时间 O(n) ~ O(n²) | 空间 O(n)

该范式的通法易错点

  • 下标与切片边界差 1。
  • 忽略了大小写、空白字符的影响。

对照本题

  • 元素值域最大到 1e3 —— 求和 / 相乘时记得开 64 位整数。

样例解读

样例 1:输入 ((x+2)*3+1)*2+5=79 → 输出 10

对于样例,我们需要找到一个 x ,使得等式左边计算结果为 79。

当 x = 10 时:

  1. 最内层括号: 10 + 2 = 12
  2. 乘以 3: 12 × 3 = 36
  3. 加 1: 36 + 1 = 37
  4. 乘以 2: 37 × 2 = 74
  5. 加 5: 74 + 5 = 79

等式成立,故答案为 10。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2026年春招-华为-01月07号开发岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解