题目描述
存在一种仅支持 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
示例 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)简单题,其实就是普通的自增和自减运算;
(2)数组中每一个字符串类型的元素的长度都是 3,而且无论是 ++x 还是 x++,或者 --x,还是 x--,我们可以发现,每个长度为 3 的元素中下标为 1 的位置上一定是符号位;
(3)基于此,我们只需要遍历原数组,判断每个元素下标为 1 的位置上是 "+" 还是 "-",如果是 "+",那就让结果自增 1,如果是减,那就让结果自减 1 即可。
代码展示
public class FinalValueAfterOperations {
public static int finalValueAfterOperations(String[] operations) {
int result = 0;
for (String operation : operations) {
if (operation.charAt(1) == '+') {
result++;
} else {
result--;
}
}
return result;
}
public static void main(String[] args) {
String[] operations = {"x++", "x--", "++x", "x++"};
int result = finalValueAfterOperations(operations);
System.out.println(result);
}
}