【Offer】[58-2] 【左旋转字符串】

时间:2019-08-29
本文章向大家介绍【Offer】[58-2] 【左旋转字符串】,主要包括【Offer】[58-2] 【左旋转字符串】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述

  字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2, 该函数将返回左旋转两位得到的结果"cdefgab"。

牛客网刷题地址

思路分析

  首先根据传入的n将字符串分为两部分,分别翻转这两个部分,然后在整体对字符串进行翻转
 

测试用例

  1. 功能测试:把长度为n的字符串左旋转0个字符、1个字符、2个字符、n-1个字符、n个字符、n+1个字符。
  2. 特殊输入测试:字符串的指针为nullptr指针。

Java代码

public class Offer058_02 {
    public static void main(String[] args) {
        test1();
        test2();
        test3();

    }

    public static String LeftRotateString(String str, int n) {
        return Solution1(str, n);
    }

    private static String Solution1(String str, int n) {
        
        if(str==null|| str.length()<=0) {
            return str;
        }
        if(n<=0 || n> str.length()) {
            return str;
        }
        char[] charArray = str.toCharArray();
        
        reverseCore(charArray, 0, n-1);
        reverseCore(charArray, n, charArray.length-1);
        reverseCore(charArray, 0, charArray.length-1);
        return String.valueOf(charArray);
    }
    
    private static void reverseCore(char[] s,int start,int end) {
        while(start<end) {
            char tmp = s[start];
            s[start] = s[end];
            s[end] = tmp;
            start++;
            end--;
        }
    }

    private static void test1() {

    }

    private static void test2() {

    }

    private static void test3() {

    }

}

代码链接

剑指Offer代码-Java

原文地址:https://www.cnblogs.com/haoworld/p/offer582-zuo-xuan-zhuan-zi-fu-chuan.html