天天看点

《剑指offer》——左旋转字符串片段截取法字符串拼接

更多2019年的技术文章,欢迎关注我的微信公众号:码不停蹄的小鼠松(微信号:busy_squirrel),也可扫下方二维码关注获取最新文章哦~
《剑指offer》——左旋转字符串片段截取法字符串拼接

T:

题目描述

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

片段截取法

这种方法,相对于最笨的方法来说,已经做了改进。

改进的地方在于:
如果循环左移的次数超过字符串的长度,比如长度为3,但是循环左移100次,那么前99次都是做的无用功,因为在移动99次之后,又回到了原点。

我的code:

/**
     * T: 左旋转字符串
     *
     * 题目描述
     * 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。
     * 对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,
     * 要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
     *
     * date: 2015.12.10  21:07
     * @author SSS
     *
     */
    public class Solution {
        public String LeftRotateString(String str,int n) {
            String resultStr = str;
            if (str == null || str.length() == 0) {
                return resultStr;
            }
             
            int len = str.length();
            int indexOfLeftRoate = n % len;
             
            if (indexOfLeftRoate != 0) {
                String clipStr = str.substring(0, indexOfLeftRoate);
                String restStr = str.substring(indexOfLeftRoate);
                resultStr = restStr + clipStr;
            }
             
            return resultStr;
        }
    }
           

字符串拼接

这种方法,从时间复杂度上来讲,与上一种解法一样,都是 O ( n ) O(n) O(n),但是从技巧性来说,这种方法更胜一筹。不多解释,代码很简单,一看就明白这一筹胜在哪儿了。。。

我的code:

/**
     * T: 左旋转字符串
     *
     * 题目描述
     * 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。
     * 对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,
     * 要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
     *
     * date: 2015.12.10  21:26
     * @author SSS
     *
     */
    public class Solution {
        public String LeftRotateString(String str,int n) {
            if (str == null || str.length() == 0) {
                return str;
            }
            int len = str.length();
            int index = n % len;
            str += str;
             
            return str.substring(index, index + len);
        }
    }
           
更多2019年的技术文章,欢迎关注我的微信公众号:码不停蹄的小鼠松(微信号:busy_squirrel),也可扫下方二维码关注获取最新文章哦~
《剑指offer》——左旋转字符串片段截取法字符串拼接