Welcome to Subscribe On Youtube
2011. Final Value of Variable After Performing Operations
Description
There is a programming language with only four operations and one variable X
:
++X
andX++
increments the value of the variableX
by1
.--X
andX--
decrements the value of the variableX
by1
.
Initially, the value of X
is 0
.
Given an array of strings operations
containing a list of operations, return the final value of X
after performing all the operations.
Example 1:
Input: operations = ["--X","X++","X++"] Output: 1 Explanation: The operations are performed as follows: Initially, X = 0. --X: X is decremented by 1, X = 0 - 1 = -1. X++: X is incremented by 1, X = -1 + 1 = 0. X++: X is incremented by 1, X = 0 + 1 = 1.
Example 2:
Input: operations = ["++X","++X","X++"] Output: 3 Explanation: The operations are performed as follows: Initially, X = 0. ++X: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. X++: X is incremented by 1, X = 2 + 1 = 3.
Example 3:
Input: operations = ["X++","++X","--X","X--"] Output: 0 Explanation: The operations are performed as follows: Initially, X = 0. X++: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. --X: X is decremented by 1, X = 2 - 1 = 1. X--: X is decremented by 1, X = 1 - 1 = 0.
Constraints:
1 <= operations.length <= 100
operations[i]
will be either"++X"
,"X++"
,"--X"
, or"X--"
.
Solutions
Solution 1: Simulation
Traverse the array operations
. For each operation $operations[i]$, if it contains '+'
, then the answer increases by $1$, otherwise the answer decreases by $1$.
The time complexity is $O(n)$, where $n$ is the length of the array operations
. The space complexity is $O(1)$.
-
class Solution { public int finalValueAfterOperations(String[] operations) { int ans = 0; for (var s : operations) { ans += (s.charAt(1) == '+' ? 1 : -1); } return ans; } }
-
class Solution { public: int finalValueAfterOperations(vector<string>& operations) { int ans = 0; for (auto& s : operations) ans += (s[1] == '+' ? 1 : -1); return ans; } };
-
class Solution: def finalValueAfterOperations(self, operations: List[str]) -> int: return sum(1 if s[1] == '+' else -1 for s in operations)
-
func finalValueAfterOperations(operations []string) (ans int) { for _, s := range operations { if s[1] == '+' { ans += 1 } else { ans -= 1 } } return }
-
function finalValueAfterOperations(operations: string[]): number { let ans = 0; for (let operation of operations) { ans += operation.includes('+') ? 1 : -1; } return ans; }
-
/** * @param {string[]} operations * @return {number} */ var finalValueAfterOperations = function (operations) { let ans = 0; for (const s of operations) { ans += s[1] === '+' ? 1 : -1; } return ans; };
-
impl Solution { pub fn final_value_after_operations(operations: Vec<String>) -> i32 { let mut ans = 0; for s in operations.iter() { ans += if s.as_bytes()[1] == b'+' { 1 } else { -1 }; } ans } }