• 剑指offer-左旋转字符串


    题目描述

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
     
    方法一:直接截断拷贝
     1 public String LeftRotateString(String str,int n) {//my
     2         StringBuffer sb = new StringBuffer(n);
     3         if(str==null||str.length()==0){
     4             return sb.toString();
     5         }
     6         n = n%str.length();
     7         sb.append(str.substring(n,str.length()));
     8         sb.append(str.substring(0,n));
     9         return sb.toString();
    10     }

    方法二:进行三次翻转,abcXYZdef,3,先翻转0-3得到cbaXYZdef,再反转3-str.length得到cbafedZYX,最后整体翻转得到XYZdefabc

     1 public class Solution {//mytip
     2     public String LeftRotateString(String str,int n) {
     3         char[] c = str.toCharArray();
     4         if(str==null||str.length()==0){
     5             return str;
     6         }
     7         n = n%str.length();
     8         for(int i =0,j=n-1;i<j;i++,j--){
     9             sw(c,i,j);
    10         }
    11         for(int i =n,j=str.length()-1;i<j;i++,j--){
    12             sw(c,i,j);
    13         }
    14         for(int i =0,j=str.length()-1;i<j;i++,j--){
    15             sw(c,i,j);
    16         }
    17         return String.valueOf(c);
    18     }
    19     public void sw(char[] c,int i,int j){
    20         char temp = c[i];
    21         c[i]=c[j];
    22         c[j]=temp;
    23     }
    24 }
  • 相关阅读:
    MongoDB 数组
    MongoDB 内嵌文档
    MongoDB 聚合操作
    MongoDB 文档的删除操作
    MongoDB 文档的更新操作
    MongoDB 文档的查询和插入操作
    MongoDB 安装和可视化工具
    SSIS 容器
    SSISDB2:SSIS工程的操作实例
    Replication:distribution 中一直在运行 waitfor delay @strdelaytime 语句
  • 原文地址:https://www.cnblogs.com/zhacai/p/10710175.html
Copyright © 2020-2023  润新知