Skip to content

Latest commit

 

History

History
185 lines (147 loc) · 4.51 KB

2011.md

File metadata and controls

185 lines (147 loc) · 4.51 KB
title description keywords
2011. 执行操作后的变量值
LeetCode 2011. 执行操作后的变量值题解,Final Value of Variable After Performing Operations,包含解题思路、复杂度分析以及完整的 JavaScript 代码实现。
LeetCode
2011. 执行操作后的变量值
执行操作后的变量值
Final Value of Variable After Performing Operations
解题思路
数组
字符串
模拟

2011. 执行操作后的变量值

🟢 Easy  🔖  数组 字符串 模拟  🔗 力扣 LeetCode

题目

There is a programming language with only four operations and one variable X:

  • ++X and X++ increments the value of the variable X by 1.
  • --X and X-- decrements the value of the variable X by 1.

Initially, the value of X is 0.

Given an array of strings operations containing a list of operations, return _thefinal value of _X after performing all the operations.

Example 1:

Input: operations = ["--X","X++","X++"]

Output: 1

Explanation: The operations are performed as follows:

Initially, X = 0.

--X: X is decremented by 1, X = 0 - 1 = -1.

X++: X is incremented by 1, X = -1 + 1 = 0.

X++: X is incremented by 1, X = 0 + 1 = 1.

Example 2:

Input: operations = ["++X","++X","X++"]

Output: 3

Explanation: The operations are performed as follows:

Initially, X = 0.

++X: X is incremented by 1, X = 0 + 1 = 1.

++X: X is incremented by 1, X = 1 + 1 = 2.

X++: X is incremented by 1, X = 2 + 1 = 3.

Example 3:

Input: operations = ["X++","++X","--X","X--"]

Output: 0

Explanation: The operations are performed as follows:

Initially, X = 0.

X++: X is incremented by 1, X = 0 + 1 = 1.

++X: X is incremented by 1, X = 1 + 1 = 2.

--X: X is decremented by 1, X = 2 - 1 = 1.

X--: X is decremented by 1, X = 1 - 1 = 0.

Constraints:

  • 1 <= operations.length <= 100
  • operations[i] will be either "++X", "X++", "--X", or "X--".

题目大意

存在一种仅支持 4 种操作和 1 个变量 X 的编程语言:

  • ++XX++ 使变量 X 的值 1
  • --XX-- 使变量 X 的值 1

最初,X 的值是 0

给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后, X最终值

示例 1:

输入: operations = ["--X","X++","X++"]

输出: 1

解释: 操作按下述步骤执行:

最初,X = 0

--X:X 减 1 ,X = 0 - 1 = -1

X++:X 加 1 ,X = -1 + 1 = 0

X++:X 加 1 ,X = 0 + 1 = 1

示例 2:

输入: operations = ["++X","++X","X++"]

输出: 3

解释: 操作按下述步骤执行:

最初,X = 0

++X:X 加 1 ,X = 0 + 1 = 1

++X:X 加 1 ,X = 1 + 1 = 2

X++:X 加 1 ,X = 2 + 1 = 3

示例 3:

输入: operations = ["X++","++X","--X","X--"]

输出: 0

解释: 操作按下述步骤执行:

最初,X = 0

X++:X 加 1 ,X = 0 + 1 = 1

++X:X 加 1 ,X = 1 + 1 = 2

--X:X 减 1 ,X = 2 - 1 = 1

X--:X 减 1 ,X = 1 - 1 = 0

提示:

  • 1 <= operations.length <= 100
  • operations[i] 将会是 "++X""X++""--X""X--"

解题思路

  1. 初始化变量 x = 0

  2. 遍历 operations 数组,检查每个字符串的中心字符。

    • 操作 "++X""X++" 的中心字符是 '+'(ASCII 值 43),表示增加 1。
    • 操作 "--X""X--" 的中心字符是 '-'(ASCII 值 45),表示减少 1。
  3. 通过 charCodeAt(1) 提取中心字符的 ASCII 值,再通过44 - str.charCodeAt(1) 计算操作的数值:

    • 如果中心字符为 '+'44 - 43 = 1
    • 如果中心字符为 '-'44 - 45 = -1
  4. 累加所有的变化到 x,返回结果。

复杂度分析

  • 时间复杂度O(n),其中 noperations 的长度,遍历数组一次。
  • 空间复杂度O(1),使用常数额外空间变量。

代码

/**
 * @param {string[]} operations
 * @return {number}
 */
var finalValueAfterOperations = function (operations) {
	let x = 0;
	operations.forEach((str) => (x += 44 - str.charCodeAt(1)));
	return x;
};