LeetCode-in-Java

3522. Calculate Score After Performing Instructions

Medium

You are given two arrays, instructions and values, both of size n.

You need to simulate a process based on the following rules:

The process ends when you either:

Return your score at the end of the process.

Example 1:

Input: instructions = [“jump”,”add”,”add”,”jump”,”add”,”jump”], values = [2,1,3,1,-2,-3]

Output: 1

Explanation:

Simulate the process starting at instruction 0:

Example 2:

Input: instructions = [“jump”,”add”,”add”], values = [3,1,1]

Output: 0

Explanation:

Simulate the process starting at instruction 0:

Example 3:

Input: instructions = [“jump”], values = [0]

Output: 0

Explanation:

Simulate the process starting at instruction 0:

Constraints:

Solution

public class Solution {
    public long calculateScore(String[] instructions, int[] values) {
        long ans = 0;
        boolean[] seen = new boolean[instructions.length];
        int pos = 0;
        while (pos >= 0 && pos < instructions.length && !seen[pos]) {
            seen[pos] = true;
            if (instructions[pos].charAt(0) == 'a') {
                ans += values[pos];
                pos++;
            } else {
                pos += values[pos];
            }
        }
        return ans;
    }
}