【算法】2011. 执行操作后的变量值(java / c / c++ / python / go / rust)

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

2011. 执行操作后的变量值:

存在一种仅支持 4 种操作和 1 个变量 X 的编程语言:

++X 和 X++ 使变量 X 的值 加 1
--X 和 X-- 使变量 X 的值 减 1
最初,X 的值是 0

给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后, X 的 最终值 。

样例 1

输入:
    operations = ["--X","X++","X++"]
输出:
    1
解释:
    操作按下述步骤执行:
    最初,X = 0
    --XX1X =  0 - 1 = -1
    X++:X1X = -1 + 1 =  0
    X++:X1X =  0 + 1 =  1
AI 代码解读

样例 2

输入:
    operations = ["++X","++X","X++"]
输出:
    3
解释:
    操作按下述步骤执行: 
    最初,X = 0
    ++XX1X = 0 + 1 = 1
    ++XX1X = 1 + 1 = 2
    X++:X1X = 2 + 1 = 3
AI 代码解读

样例 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
AI 代码解读

提示

  • 1 <= operations.length <= 100
  • operations[i] 将会是 "++X"、"X++"、"--X" 或 "X--"

分析

  • 一共有4种操作符号,但是只有2种操作。我们要把"++X"、"X++"当作加法, 把"--X" 或 "X--"当作减法。比较直观的方式就是直接上map,switch,if else,都可以。
  • 每种操作符号都是三个字符,X可能在头或在尾,但是中间的字符却只有2种,正是'+'和'-'。

题解

java

class Solution {
    public int finalValueAfterOperations(String[] operations) {
        int ans = 0;

        for (String operation : operations) {
            // 操作类型
            char op = operation.charAt(1);
            switch (op) {
                case '+':
                    ans++;
                    break;
                case '-':
                    ans--;
                    break;
            }
        }

        return ans;
    }
}
AI 代码解读

c

int finalValueAfterOperations(char ** operations, int operationsSize){
    int ans = 0;

    for (int i = 0; i < operationsSize; ++i) {
        char op = operations[i][1];
        switch (op) {
            case '+':
                ++ans;
                break;
            case '-':
                --ans;
                break;
        }
    }

    return ans;
}
AI 代码解读

c++

class Solution {
public:
    int finalValueAfterOperations(vector<string>& operations) {
        int ans = 0;

        for (auto &operation : operations) {
            char op = operation[1];
            switch (op) {
                case '+':
                    ++ans;
                    break;
                case '-':
                    --ans;
                    break;
            }
        }

        return ans;
    }
};
AI 代码解读

python

class Solution:
    def finalValueAfterOperations(self, operations: List[str]) -> int:
        ans = 0
        for operation in operations:
            if operation[1] == '+':
                ans += 1
            else:
                ans -= 1
        return ans
AI 代码解读

go

func finalValueAfterOperations(operations []string) int {
    ans := 0
    for _, operation := range operations {
        op := operation[1]
        switch op {
        case '+':
            ans++
        case '-':
            ans--
        }
    }
    return ans
}
AI 代码解读

rust

impl Solution {
    pub fn final_value_after_operations(operations: Vec<String>) -> i32 {
        operations.iter().map(|operation| {
            if operation.contains('+') {
                1
            } else {
                -1
            }
        }).sum()
    }
}
AI 代码解读

原题传送门:https://leetcode-cn.com/problems/final-value-of-variable-after-performing-operations/


非常感谢你阅读本文~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://developer.aliyun.com/profile/sqd6avc7qgj7y 博客原创~

目录
打赏
0
1
1
0
3
分享
相关文章
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
316 75
探究‘公司禁用 U 盘’背后的哈希表算法与 Java 实现
在数字化办公时代,信息安全至关重要。许多公司采取“禁用U盘”策略,利用哈希表算法高效管理外接设备的接入权限。哈希表通过哈希函数将设备标识映射到数组索引,快速判断U盘是否授权。例如,公司预先将允许的U盘标识存入哈希表,新设备接入时迅速验证,未授权则禁止传输并报警。这有效防止恶意软件和数据泄露,保障企业信息安全。 代码示例展示了如何用Java实现简单的哈希表,模拟公司U盘管控场景。哈希表不仅用于设备管理,还在文件索引、用户权限等多方面助力信息安全防线的构建,为企业数字化进程保驾护航。
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
170 7
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
在比较Java和Python哪个更易学
在比较Java和Python哪个更易学
70 4
Java和Python
Java和Python
99 2
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
41 12
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
49 16
类和对象(中 )C++
本文详细讲解了C++中的默认成员函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载和取地址运算符重载等内容。重点分析了各函数的特点、使用场景及相互关系,如构造函数的主要任务是初始化对象,而非创建空间;析构函数用于清理资源;拷贝构造与赋值运算符的区别在于前者用于创建新对象,后者用于已存在的对象赋值。同时,文章还探讨了运算符重载的规则及其应用场景,并通过实例加深理解。最后强调,若类中存在资源管理,需显式定义拷贝构造和赋值运算符以避免浅拷贝问题。

热门文章

最新文章