zoukankan      html  css  js  c++  java
  • Lintcode: Rotate String

    Given a string and an offset, rotate string by offset. (rotate from left to right)
    
    Example
    Given "abcdefg"
    
    for offset=0, return "abcdefg"
    
    for offset=1, return "gabcdef"
    
    for offset=2, return "fgabcde"
    
    for offset=3, return "efgabcd"

    需要注意的是:if (A.length == 0) return new char[0]; 空数组

     1 public class Solution {
     2     /*
     3      * param A: A string
     4      * param offset: Rotate string with offset.
     5      * return: Rotated string.
     6      */
     7     public char[] rotateString(char[] A, int offset) {
     8         // wirte your code here
     9         if (A==null || A.length == 0) return new char[0];
    10         String str = new String(A);
    11         offset %= str.length();
    12         if (offset == 0) return str.toCharArray();
    13         String first = str.substring(0, str.length()-offset);
    14         String second = str.substring(str.length()-offset);
    15         String res = second + first;
    16         return res.toCharArray();
    17     }
    18 };

     法二(推荐):

     1 public class Solution {
     2     /**
     3      * @param str: an array of char
     4      * @param offset: an integer
     5      * @return: nothing
     6      */
     7     public void rotateString(char[] str, int offset) {
     8         // write your code here
     9         if (str==null || str.length==0) return;
    10         offset %= str.length;
    11         if (offset == 0) return;
    12         reverse(str, 0, str.length-1);
    13         reverse(str, 0, offset-1);
    14         reverse(str, offset, str.length-1);
    15     }
    16     
    17     public void reverse(char[] str, int l, int r) {
    18         
    19         while (l < r) {
    20             char temp = str[l];
    21             str[l] = str[r];
    22             str[r] = temp;
    23             l++;
    24             r--;
    25         }
    26     }
    27 }
  • 相关阅读:
    面向对象的三个特征:封装(抽象)、继承、多态
    java中流程控制有4种循环,各自的适用场景
    break 和 continue
    基础知识点总结及示例
    Java程序的运行过程,以及Java为什么能够跨平台
    JDK,JRE,JVM的区别与联系?
    jsp(二)
    JSP
    过滤器
    Servlet监听器(二)
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/4427493.html
Copyright © 2011-2022 走看看