前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道剑指offer-左旋转字符串

每天一道剑指offer-左旋转字符串

作者头像
乔戈里
发布2019-01-23 10:04:32
3190
发布2019-01-23 10:04:32
举报
文章被收录于专栏:Java那些事Java那些事

考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默响起来一个声音:”乔戈里峰

题目

每天一道剑指offer-左旋转字符串 https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec?tpId=13&tqId=11196&tPage=3&rp=3&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking

题目详述

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

题目详解

思路

,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。 剑指offer思路,先反转整个字符串,就是fedZYXcba,然后反转前6位XYZdef再反转后三位abc。那么就是XYZdefabc。

代码

代码语言:javascript
复制
public class Solution {
    public String LeftRotateString(String str,int n) {
        if(str == null || str.equals(""))
            return "";
        n = n % str.length();
        char [] strArray = str.toCharArray();
        reverse(strArray,0,str.length()-1);//反转整个字符串
        reverse(strArray,0,str.length()-n-1);//反转前字符串长度-n个字符
        reverse(strArray,str.length()-n,str.length()-1);//反转后n个字符
        return String.valueOf(strArray);
    }
    public void reverse(char [] strArray,int start,int end)
    {//反转字符数组
        while(start < end)
        {
            char ch = strArray[start];
            strArray[start] = strArray[end];
            strArray[end] = ch;
            start++;
            end--;
        }
    }
}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 题目详述
  • 题目详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档