zoukankan      html  css  js  c++  java
  • 左旋转字符串(Java)-循环Index方式

    左旋转字符串(Java)-循环Index方式

    题目要求

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

    我的思考

    ​ 我们通过观察发现,左移几位,就是开始从哪位输出,但是输出的长度还是字符串本身的长度,也就是说,左移3位,那么就是从原始字符串的index=3处开始输出,输出的个数仍然是字符串长度的个数,这样肯定就越界了,所以,我们在取index的时候用index = index % str.length;让其在超出了字符串长度就返回到最前边取值。就循环起来了、

    我的代码

    package jianzhioffer;
    
    /**
     * @author jiyongjia
     * @create 2020/6/25 - 14:43
     * @descp:  左旋字符串
     *  汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。
     *  对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。
     *  例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
     */
    public class P13_LeftRotateString {
    
        public static void main(String[] args) {
            String str = "abcdefg";
            String string = LeftRotateString(str, 2);
            System.out.println(string);
        }
    
        public static String LeftRotateString(String str,int n) {
            int length = str.length();
            StringBuilder builder = new StringBuilder();
    
            while(length>0){
                builder.append(str.charAt(n++%str.length()));
                //减1
                length--;
            }
    
            return builder.toString();
        }
    }
    

    测试输出

    输入:"abcdefg" ,左移2位

    输出:

    image-20200625145525842

  • 相关阅读:
    程序员为什么难管理?
    Python多继承
    如何从程序员走向管理层?
    为什么Python能超越JAVA,有什么优势?
    HTTP协议简介与在python中的使用详解
    人力资源管理书籍推荐,这本书HR必看
    把市面上的书翻了个遍,找到这五本经典营销管理书籍推荐给大家
    服务器部署之 cap deploy:setup
    【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
    【转】C/C++字节对齐算法
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13191786.html
Copyright © 2011-2022 走看看