开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第46天,点击查看活动详情
已经阳了的第一天
刷题的日常-2022年12月23号
一天一题,保持脑子清爽
执行操作后的变量值
来自leetcode的 2011 题,题意如下:
存在一种仅支持 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
理解题意
通过题意,我们可以将信息整理如下:
- 题目给出一个字符串数组
- 字符串数组中只包含 "--X","X++","X++" "X++"
- X的初始值是0
- 题目描述那么长,其实就是在说含有 + 号的将x加一,含有 - 号的减1
- 要求我们返回最终结果
做题思路
通过题目的观察可以发现,不管加减符号在前在后其实都不影响结果,所以有加号的就加一,有减号的就减1。最直接的想法是遍历字符串里面的每一个字符,查看是否出现加减号,然后对应操作变量就行。但是这里题目限定了只会出现四种情况,四种情况的加减号都会出现在索引为1的位置,所以我们可以直接拿索引为1位置的字符进行判断,可以省下一个循环,解题步骤如下:
- 开辟一个变量保存结果
- 循环每个字符串
- 取字符串中索引为1的位置
- 如果是 + 号就加1,否则减1
- 返回最终结果
代码实现
代码实现如下:
public class Solution {
public int finalValueAfterOperations(String[] operations) {
int res = 0;
for (String operation : operations) {
if (operation.charAt(1) == '+') {
res++;
}
if (operation.charAt(1) == '-') {
res--;
}
}
return res;
}
}