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

左旋转字符串

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--;
        }
    }

全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务