問題描述:java
給定字符串和左旋的字符數,寫程序實現字符串的左旋操做。例如對於字符串」12345678″, 左旋轉4個字符後,變成」56781234″。要求時間複雜度爲O(n),空間複雜度O(1)。app
問題分析:ui
假設字符串表示爲XY,X表示須要左旋的部分,左旋後字符串表示爲YX。spa
代碼實現:字符串
package oschina.IT100; /** * @project: oschina * @filename: IT26.java * @version: 0.10 * @author: JM Han * @date: 5:23 PM 1/5/2016 * @comment: Rotate characters of a String * @result: After rotate 3 of 12345678 is: 45678123 */ public class IT26 { public static String rotateString(String s, int n){ StringBuilder sxb = new StringBuilder(s.substring(0, n)); StringBuilder syb = new StringBuilder(s.substring(n)); StringBuilder srb = sxb.reverse().append(syb.reverse()); return srb.reverse().toString(); } public static void main(String[] args) { String src = "12345678"; int n = 3; System.out.println("After rotate " + n + "character of " + src + " is: " + rotateString(src, n)); } }