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