开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 24 天,点击查看活动详情。
执行操作后的变量值
原题地址
存在一种仅支持 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--"
思路分析
方法一
- 按照题目中的对运算的定义挨个计算;
- 遍历
operations,遇到 ++X 和 X++ 时,给result进行加一的操作,遇到 --X 和 X-- 时,给result进行减一的操作; - 最后返回
result即可。
方法二
- 定义一个
map,来存储题目中的运算和加减的关系; - 遍历
operations,使用eval来执行构成的字符串运算; - 遍历完成后,返回
result即可。
AC 代码
/**
* @param {string[]} operations
* @return {number}
*/
var finalValueAfterOperations = function(operations) {
let result = 0
for(let i = 0; i < operations.length; i++) {
if(operations[i] === '++X' || operations[i] === 'X++') {
result += 1
} else if(operations[i] === '--X' || operations[i] === 'X--') {
result -= 1
}
}
return result
};
结果:
- 执行结果: 通过
- 执行用时:72 ms, 在所有 JavaScript 提交中击败了24.55%的用户
- 内存消耗:41.4 MB, 在所有 JavaScript 提交中击败了55.69%的用户
- 通过测试用例:259 / 259
方法二
/**
* @param {string[]} operations
* @return {number}
*/
var finalValueAfterOperations = function(operations) {
const map = {
'++X': '+',
'X++': '+',
'--X': '-',
'X--': '-'
}
let result = 0
for(let i = 0; i < operations.length; i++) {
result = eval(`${result}${map[operations[i]]}1`)
}
return result
};
结果:
- 执行结果: 通过
- 执行用时:76 ms, 在所有 JavaScript 提交中击败了13.17%的用户
- 内存消耗:43.7 MB, 在所有 JavaScript 提交中击败了5.39%的用户
- 通过测试用例:259 / 259