2011-执行操作后的变量值

Raphael Liu Lv10

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

  • ++XX++ 使变量 X 的值 1
  • --XX-- 使变量 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 <= 100
  • operations[i] 将会是 "++X""X++""--X""X--"

方法一:模拟

初始时令 x=0,遍历字符串数组 operations,遇到 ++X" 或 X++” 时,将 x 加 1,否则将 x 减 1。

[sol1-Python3]
1
2
3
class Solution:
def finalValueAfterOperations(self, operations: List[str]) -> int:
return sum(1 if op[1] == '+' else -1 for op in operations)
[sol1-C++]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int finalValueAfterOperations(vector<string>& operations) {
int x = 0;
for (auto &op : operations) {
if (op == "X++" || op == "++X") {
x++;
} else {
x--;
}
}
return x;
}
};
[sol1-Java]
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int finalValueAfterOperations(String[] operations) {
int x = 0;
for (String op : operations) {
if ("X++".equals(op) || "++X".equals(op)) {
x++;
} else {
x--;
}
}
return x;
}
}
[sol1-C#]
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Solution {
public int FinalValueAfterOperations(string[] operations) {
int x = 0;
foreach (string op in operations) {
if (op == "X++" || op == "++X") {
x++;
} else {
x--;
}
}
return x;
}
}
[sol1-C]
1
2
3
4
5
6
7
8
9
10
11
12
int finalValueAfterOperations(char ** operations, int operationsSize) {
int x = 0;
for (int i = 0; i < operationsSize; i++) {
char *op = operations[i];
if (!strcmp(op, "X++") || !strcmp(op, "++X")) {
x++;
} else {
x--;
}
}
return x;
}
[sol1-JavaScript]
1
2
3
4
5
6
7
8
9
10
11
var finalValueAfterOperations = function(operations) {
let x = 0;
for (const op of operations) {
if ("X++" === op || "++X" === op) {
x++;
} else {
x--;
}
}
return x;
};
[sol1-Golang]
1
2
3
4
5
6
7
8
9
10
func finalValueAfterOperations(operations []string) (x int) {
for _, op := range operations {
if op[1] == '+' {
x++
} else {
x--
}
}
return
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串数组 operations 的长度。

  • 空间复杂度:O(1)。仅用到若干额外变量。

 Comments
On this page
2011-执行操作后的变量值