更多2019年的技術文章,歡迎關注我的微信公衆号:碼不停蹄的小鼠松(微信号:busy_squirrel),也可掃下方二維碼關注擷取最新文章哦~![]()
《劍指offer》——左旋轉字元串片段截取法字元串拼接
T:
題目描述
彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字元串模拟這個指令的運算結果。對于一個給定的字元序列S,請你把其循環左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!
片段截取法
這種方法,相對于最笨的方法來說,已經做了改進。
- 改進的地方在于:
- 如果循環左移的次數超過字元串的長度,比如長度為3,但是循環左移100次,那麼前99次都是做的無用功,因為在移動99次之後,又回到了原點。
我的code:
/**
* T: 左旋轉字元串
*
* 題目描述
* 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字元串模拟這個指令的運算結果。
* 對于一個給定的字元序列S,請你把其循環左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,
* 要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!
*
* date: 2015.12.10 21:07
* @author SSS
*
*/
public class Solution {
public String LeftRotateString(String str,int n) {
String resultStr = str;
if (str == null || str.length() == 0) {
return resultStr;
}
int len = str.length();
int indexOfLeftRoate = n % len;
if (indexOfLeftRoate != 0) {
String clipStr = str.substring(0, indexOfLeftRoate);
String restStr = str.substring(indexOfLeftRoate);
resultStr = restStr + clipStr;
}
return resultStr;
}
}
字元串拼接
這種方法,從時間複雜度上來講,與上一種解法一樣,都是 O ( n ) O(n) O(n),但是從技巧性來說,這種方法更勝一籌。不多解釋,代碼很簡單,一看就明白這一籌勝在哪兒了。。。
我的code:
/**
* T: 左旋轉字元串
*
* 題目描述
* 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字元串模拟這個指令的運算結果。
* 對于一個給定的字元序列S,請你把其循環左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,
* 要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!
*
* date: 2015.12.10 21:26
* @author SSS
*
*/
public class Solution {
public String LeftRotateString(String str,int n) {
if (str == null || str.length() == 0) {
return str;
}
int len = str.length();
int index = n % len;
str += str;
return str.substring(index, index + len);
}
}
更多2019年的技術文章,歡迎關注我的微信公衆号:碼不停蹄的小鼠松(微信号:busy_squirrel),也可掃下方二維碼關注擷取最新文章哦~![]()
《劍指offer》——左旋轉字元串片段截取法字元串拼接