zoukankan      html  css  js  c++  java
  • 每日一题

    题目信息

    • 时间: 2019-07-05

    • 题目链接:Leetcode

    • tag: 字符串 排序

    • 难易程度:中等

    • 题目描述:

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

    示例1:

    输入: s = "abcdefg", k = 2
    输出: "cdefgab"
    

    示例2:

    输入: s = "lrloseumgh", k = 6
    输出: "umghlrlose"
    

    注意

    1. 1 <= k < s.length <= 10000
    

    解题思路

    本题难点

    旋转k个字符串

    具体思路

    列表遍历拼接

    • 新建一个StringBuilder(Java) ,记为 res;
    • 先向 res 添加 “第 n+1 位至末位的字符” ;
    • 再向 res 添加 “首位至第 n 位的字符” ;
    • 将 res 转化为字符串并返回。

    代码

    class Solution {
        public String reverseLeftWords(String s, int n) {
             StringBuilder res = new StringBuilder();
             for(int i = n; i < n + s.length(); i++){
                 res.append(s.charAt(i % s.length()));
             }
             return res.toString();
        }
    }
    

    复杂度分析:

    • 时间复杂度 O(N) : 线性遍历 s并添加,使用线性时间;
    • 空间复杂度 O(N) : 新建的辅助 res 使用 O(N) 大小的额外空间。

    其他优秀解答

    解题思路

    字符串切片

    代码

    class Solution {
        public String reverseLeftWords(String s, int n) {
            return s.substring(n,s.length()) + s.substring(0,n);
        }
    }
    
  • 相关阅读:
    实现跨域的几种方法
    2015-07-15
    unity3d中给GameObject绑定脚本的代码
    unity3d的碰撞检测及trigger
    区块链 (未完)
    mono部分源码解析
    量化策略分析的研究内容
    mono搭建脚本整理
    unity3d简介
    Hook技术之API拦截(API Hook)
  • 原文地址:https://www.cnblogs.com/ID-Wangqiang/p/13273067.html
Copyright © 2011-2022 走看看