2011. 执行操作后的变量值
2011. 执行操作后的变量值
题目
There is a programming language with only four operations and one variable X
:
++X
andX++
increments the value of the variableX
by1
.--X
andX--
decrements the value of the variableX
by1
.
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
的编程语言:
++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 <= 100
operations[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;
};