A newly designed keypad was tested, where a tester pressed a sequence of
You are given a string
The tester wants to know the key of the keypress that had the longest duration. The
Note that the same key could have been pressed multiple times during the test, and these multiple presses of the same key may not have had the same duration.
Return the key of the keypress that had the longest duration. If there are multiple such keypresses, return the lexicographically largest key of the keypresses.
n
keys, one at a time.You are given a string
keysPressed
of length n
, where keysPressed[i]
was the ith
key pressed in the testing sequence, and a sorted list releaseTimes
, where releaseTimes[i]
was the time the ith
the key was released. Both arrays are 0-indexed. The 0th
the key was pressed at the time 0
, and every subsequent key was pressed at the exact time the previous key was released.The tester wants to know the key of the keypress that had the longest duration. The
ith
keypress had a duration of releaseTimes[i] - releaseTimes[i - 1]
, and the 0th
keypress had a duration of releaseTimes[0]
.Note that the same key could have been pressed multiple times during the test, and these multiple presses of the same key may not have had the same duration.
Return the key of the keypress that had the longest duration. If there are multiple such keypresses, return the lexicographically largest key of the keypresses.
Example 1:
Input: releaseTimes = [12,23,36,46,62], keysPressed = "spuda"
Output: "a"
Approach
Java
public class SlowestKey {public static void main(String[] args) {int[] releaseTimes = { 12, 23, 36, 46, 62 };String keysPressed = "spuda";System.out.println(slowestKey(releaseTimes, keysPressed));}static char slowestKey(int[] releaseTimes, String keysPressed) {int n = releaseTimes.length;int max1 = releaseTimes[0];char ans = keysPressed.charAt(0);for (int i = 1; i < n; i++) {if (releaseTimes[i] - releaseTimes[i - 1] > max1) {max1 = releaseTimes[i] - releaseTimes[i - 1];ans = keysPressed.charAt(i);} else if (releaseTimes[i] - releaseTimes[i - 1] == max1) {if (keysPressed.charAt(i) > ans)ans = keysPressed.charAt(i);}}return ans;}}
C++
#include <bits/stdc++.h>using namespace std;char slowestKey(vector<int> &releaseTimes, string keysPressed){int n = releaseTimes.size();int max1 = releaseTimes[0];char ans = keysPressed[0];for (int i = 1; i < n; i++){if (releaseTimes[i] - releaseTimes[i - 1] > max1){max1 = releaseTimes[i] - releaseTimes[i - 1];ans = keysPressed[i];}else if (releaseTimes[i] - releaseTimes[i - 1] == max1){if (keysPressed[i] > ans)ans = keysPressed[i];}}return ans;}int main(){vector<int> releaseTimes = {12, 23, 36, 46, 62};string keysPressed = "spuda";cout << slowestKey(releaseTimes, keysPressed);return 0;}
No comments:
Post a Comment