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]:directioncan be0(for left shift) or1(for right shift).amountis the amount by which stringsis to be shifted.- A left shift by 1 means remove the first character of
sand append it to the end. - Similarly, a right shift by 1 means remove the last character of
sand 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 <= 100sonly contains lower case English letters.1 <= shift.length <= 100shift[i].length == 20 <= shift[i][0] <= 10 <= 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