1790. 旋转字符串II

1790. 旋转字符串II

 
给出一个字符串(以字符数组形式给出),一个右偏移和一个左偏移,根据给出的偏移量循环移动字符串。(left offest表示字符串向左的偏移量,right offest表示字符串向右的偏移量,左偏移量和右偏移量计算得到总偏移量,在总偏移量处分成两段字符串并交换位置)。

样例

Example 1:
Input:str ="abcdefg", left = 3, right = 1
Output:"cdefgab"
Explanation:The left offset is 3, the right offset is 1, and the total offset is left 2. Therefore, the original string moves to the left and becomes "cdefg"+ "ab".
Example 2:
Input:str="abcdefg", left = 0, right = 0
Output:"abcdefg"
Explanation:The left offset is 0, the right offset is 0, and the total offset is 0. So the string remains unchanged.
Example 3:
Input:str = "abcdefg",left = 1, right = 2
Output:"gabcdef"
Explanation:The left offset is 1, the right offset is 2, and the total offset is right 1. Therefore, the original string moves to the left and becomes "g" + "abcdef".
 
public class Solution {
    /**
     * @param str: A String
     * @param left: a left offset
     * @param right: a right offset
     * @return: return a rotate string
     */
    public String RotateString2(String str, int left, int right) {
       if (left == right) {
                return str;
            } else if (right > left) {
                right = str.length()-(right - left) % str.length();
                return str.substring(right) + str.substring(0, right);
            } else {
                left = (left - right)% str.length();
                return str.substring(left) + str.substring(0, left);
            }
    }
}
 
public class Solution {
    /**
     * @param str: A String
     * @param left: a left offset
     * @param right: a right offset
     * @return: return a rotate string
     */
    public String RotateString2(String str, int left, int right) {
       if (left == right) {
                return str;
            } else if (right > left) {
                right = right % str.length();
                left = left % str.length();
                right = right - left;
                if(right<0)right=str.length()+right;
                // System.out.println(right);
                return str.substring(str.length()-right) + str.substring(0, str.length()-right);
            } else {
                right = right % str.length();
                left = left % str.length();
                left = left - right;
                if(left<0)left=str.length()+left;
                // System.out.println(left);
                return str.substring(left) + str.substring(0, left);
            }
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时代我西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值