1427. Perform String Shifts π
Description
You are given a string s
containing lowercase English letters, and a matrix shift
, where shift[i] = [directioni, amounti]
:
directioni
can be0
(for left shift) or1
(for right shift).amounti
is the amount by which strings
is to be shifted.- A left shift by 1 means remove the first character of
s
and append it to the end. - Similarly, a right shift by 1 means remove the last character of
s
and add it to the beginning.
Return the final string after all operations.
Example 1:
Input: s = "abc", shift = [[0,1],[1,2]] Output: "cab" Explanation: [0,1] means shift to left by 1. "abc" -> "bca" [1,2] means shift to right by 2. "bca" -> "cab"
Example 2:
Input: s = "abcdefg", shift = [[1,1],[1,1],[0,2],[1,3]] Output: "efgabcd" Explanation: [1,1] means shift to right by 1. "abcdefg" -> "gabcdef" [1,1] means shift to right by 1. "gabcdef" -> "fgabcde" [0,2] means shift to left by 2. "fgabcde" -> "abcdefg" [1,3] means shift to right by 3. "abcdefg" -> "efgabcd"
Constraints:
1 <= s.length <= 100
s
only contains lower case English letters.1 <= shift.length <= 100
shift[i].length == 2
directioni
is either0
or1
.0 <= amounti <= 100
Solutions
Solution 1: Simulation
We can denote the length of the string \(s\) as \(n\). Next, we traverse the array \(shift\), accumulate to get the final offset \(x\), then take \(x\) modulo \(n\), the final result is to move the first \(n - x\) characters of \(s\) to the end.
The time complexity is \(O(n + m)\), where \(n\) and \(m\) are the lengths of the string \(s\) and the array \(shift\) respectively. The space complexity is \(O(1)\).
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|