刷题的日常-执行操作后的变量值

98 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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;
    }
}