zoukankan      html  css  js  c++  java
  • 剑指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 }
  • 相关阅读:
    javascript事件委托和jQuery事件绑定on、off 和one
    转:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    网游加速器原理、技术与实现
    自动化测试等级
    游戏测试工具
    JMeter
    Python高级编程
    测试提高项目的方法
    python mysqldb
    Python中的操作符重载
  • 原文地址:https://www.cnblogs.com/zhacai/p/10710175.html
Copyright © 2011-2022 走看看