2011. 执行操作后的变量值
2011. 执行操作后的变量值
题目
There is a programming language with only four operations and one variable X:
++XandX++increments the value of the variableXby1.--XandX--decrements the value of the variableXby1.
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 <= 100operations[i]will be either"++X","X++","--X", or"X--".
题目大意
存在一种仅支持 4 种操作和 1 个变量 X 的编程语言:
++X和X++使变量X的值 加1--X和X--使变量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 <= 100operations[i]将会是"++X"、"X++"、"--X"或"X--"
解题思路
初始化变量
x = 0。遍历
operations数组,检查每个字符串的中心字符。- 操作
"++X"和"X++"的中心字符是'+'(ASCII 值 43),表示增加 1。 - 操作
"--X"和"X--"的中心字符是'-'(ASCII 值 45),表示减少 1。
- 操作
通过
charCodeAt(1)提取中心字符的 ASCII 值,再通过44 - str.charCodeAt(1)计算操作的数值:- 如果中心字符为
'+':44 - 43 = 1。 - 如果中心字符为
'-':44 - 45 = -1。
- 如果中心字符为
累加所有的变化到
x,返回结果。
复杂度分析
- 时间复杂度:
O(n),其中n是operations的长度,遍历数组一次。 - 空间复杂度:
O(1),使用常数额外空间变量。
代码
/**
* @param {string[]} operations
* @return {number}
*/
var finalValueAfterOperations = function (operations) {
let x = 0;
operations.forEach((str) => (x += 44 - str.charCodeAt(1)));
return x;
};
