先翻转部分,后翻转整体。

左旋转字符串

http://www.nowcoder.com/questionTerminal/12d959b108cb42b1ab72cef4d36af5ec

先翻转部分,后翻转整体。注意上下界限。n-1

翻转过程:双指针。

图示如下。来源:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/solution/yuan-di-ju-bu-fan-zhuan-zheng-ti-fan-zhuan-xiang-j/
图片说明

   /**
     * 对于一个给定的字符序列S,请你把其循环左移K位后的序列输出
     * @param str 字符序列S
     * @param n 循环左移n位
     * @return 移位后的结果
     */
    public String LeftRotateString(String str,int n) {
        if(str==null||str.length()==0){
            return "";
        }
        int length=str.length();
        char[] chars=str.toCharArray();
        n%=length;
        reverseString(chars,0,n-1);
        reverseString(chars,n,length-1);
        reverseString(chars,0,length-1);
        return new String(chars);

    }

    public void reverseString(char[] chars,int start,int end ){
        while (start<end){
            char ch=chars[start];
            chars[start]=chars[end];
            chars[end]=ch;
            start++;
            end--;
        }
    }

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务