算法日志 --- 12.23--- 执行操作后的变量值

66 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情

又到了快乐周五了,家人们起飞~

执行操作后的变量值

该题出自力扣的2011题 —— 执行操作后的变量值【简单题】

审题

存在一种仅支持 4 种操作和 1 个变量 X 的编程语言: ++X 和 X++ 使变量 X 的值 加 1 --X 和 X-- 使变量 X 的值 减 1 最初,X 的值是 0 给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后, X 的 最终值 。

  • 这道题就不能说了,简单题的战斗机,就是把 ++ --这一套东西转成字符串,再让你根据判断,去执行真实的操作
  • 给出一个字符串,里面包含了加和减,一开始还以为是会涉及到先加或者先减的,谁知道每一个操作都是原子性的,就不存在所谓的先后之分了
  • 遍历字符串数组,判断是否++即可
  • 加减操作只需要看中间是‘+’ 还是‘-’
  • 自增自减符号无论在变量前面还是后面 ,第 1 个字符都是操作符,遍历字符串数组时,只需要判断第 1 个字符是什么符号,即可判断是自增还是自减 。
  • 也可以采用分别记录+, -出现的次数,最终计算合的方式,但是显然这种办法就是为了更多样而更多样的,并不是说是更好的办法,毕竟这倒题的简单程度已经不允许再出现更多的无谓方法了

编码

class Solution {
    public int finalValueAfterOperations(String[] operations) {
        int num =0;
        for (String a:operations) {
            if (a.equals("++X") || a.equals("X++")){
                num++;
            }else {
                num--;
            }
        }
        return num;
    }
}
  • 时间复杂度 : O(n) , 字符串数量 n , 遍历整个字符串数组,时间复杂度O(n) 。
  • 空间复杂度 : O(1) , 只使用常量级空间 。
class Solution {
    public int finalValueAfterOperations(String[] operations) {
        int n = 0;
        for(String operation : operations) {
            if(operation.charAt(1) == '-') n--;
            else n++;
        }
        return n;
    }
}

image.png