【LeetCode】# 面试题58 - II. 左旋转字符串

一、题目描述

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

二、解题

解题思路在源码中很详细标明

三、源码

 /**
     * 调用api方式
     * 执行用时 :6 ms, 在所有 Java 提交中击败了10.81%的用户
     * 内存消耗 :40 MB在所有 Java 提交中击败了100.00%的用户
     * @param s
     * @param n
     * @return
     */
    public String reverseLeftWords(String s, int n) {
        int length = s.length();
        if (n >= 1 && n < length && n <= 10000) {
            String str1 = s.substring(0, n);//截取n之前的数据
            String str2 = s.substring(n, length);//截取n之后的数据
            System.out.println(str2+str1);
            return str2 + str1;//返回两者拼接字符串
        }
        return "";
    }


    /**
     * 方法二
     *执行用时 :4 ms, 在所有 Java 提交中击败了18.30%的用户
     *内存消耗 :40 MB在所有 Java 提交中击败了100.00%的用户
     */
    public String reverseLeftWords2(String s, int n) {
        int length = s.length();
        if (n >= 1 && n < length && n <= 10000) {
            StringBuffer stringBuffer = new StringBuffer();
            for (int i = n; i < length; i++) {
                stringBuffer.append(s.charAt(i));
            }
            for (int i = 0; i < n; i++) {
                stringBuffer.append(s.charAt(i));
            }
            return stringBuffer.toString();
        }
        return "";
    }

四、附上github

https://github.com/maryyMa/LeetCodeTest/commit/e8a98425b438a79df2f6dc8b1cd99f237fcce90f

五、总结:

这道题就很easy啦,过一过先熟悉一下环境,不过两个方法在执行用时这边都不怎么样啊。

你可能感兴趣的:(【LeetCode】# 面试题58 - II. 左旋转字符串)