Perform String Shifts - Leetcode
You are given a string
Example 1:
Constraints:
s
containing lowercase English letters, and a matrix shift
, where shift[i] = [direction, amount]
:direction
can be0
(for left shift) or1
(for right shift).amount
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.
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
0 <= shift[i][0] <= 1
0 <= shift[i][1] <= 100
class Solution {
public String stringShift(String s, int[][] shift) {
int i,j, amt = 0;
int length = s.length();
String sub1 = "", sub2 = "";
for(i=0;i<shift.length;i++){
if(shift[i][0] == 0){
amt = shift[i][1];
sub1 = s.substring(0,amt);
sub2 = s.substring(amt);
s = sub2+sub1;
}
else{
amt = shift[i][1];
sub1 = s.substring(length-amt);
sub2 = s.substring(0, length-amt);
s = sub1 + sub2;
}
}
return s;
}
}
Here, we are using substring concept in java.
i indicates length of array and j will be 0 and 1. So one for loop is enough.
If 0 do left shift by splitting string using substring and merge and store it in s.
If 1 do right shift by splitting string using substring and merge and store it in s.
Try it on Leetcode
If anyone had any different solution leave it as a comment.
Comments
Post a Comment