LintCode 8 旋轉字串
題目:rotateString
要求:
給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉)
樣例:
對於字串 "abcdefg".
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
演算法要求:
在陣列上原地旋轉,使用O(1)的額外空間
解題思路:
用直接定位法,來進行每個字元的定位。可以理解城對號入座,只需要進行n-1次就可以了。
此演算法的時間複雜度為O(n),進行n-1次交換。
演算法如下:
void rotateString(string &str, int offset) {
int length = str.length();
int now = 0;//當前last位置所代表字元的初始位置
int last = 0;//考慮到可以能重複迴圈,用來記錄是否重複了,
char tempStr;
if (length == 0 || str == NULL) {
return;
}
if (offset >= length) {
offset = offset % length;
}
if (offset == 0) {
return;
} else {
for (int i = 1; i < length ; i++) {
tempStr = str[abs((offset + now) % length)];
str[abs((now + offset) % length)] = str[last];
str[last] = tempStr;
now = abs((offset + now) % length);
if (now == last) {//如果重複操作了,就進行+1操作
last++;
now = last;
}
}
}
}
相關推薦
LintCode 8. 旋轉字串
8. 旋轉字串 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉)樣例對於字串 "abcdefg".offset=0 => "abcdefg" offset=1 => "gabcd
LintCode 8 旋轉字串
題目:rotateString 要求: 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例: 對於字串 "abcdefg". offset=0 => "abcde
[LintCode]8.旋轉字串
給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例 對於字串 "abcdefg". offset=0 => "abcdefg" offset=1 => "gabcdef"
LintCode 8.旋轉字串 C++
問題描述:給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例:對於字串 "abcdefg". offset=0 => "abcdefg" offset=1 => "gabcdef" offset=2 => "fgabcde" offset=
LintCode之8 旋轉字串
題目來源:旋轉字串 題目描述: 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例: 對於字串 “abcdefg”. offset=0 => “abcdefg”
LintCode 8. 旋轉字符串
長度 一位 clas abc ret pan ota 挑戰 style 題目:給定一個字符串和一個偏移量,根據偏移量旋轉字符串(從左向右旋轉)。 樣例 對於字符串 "abcdefg". offset=0 => "abcdefg" offset=1 => "ga
lintcode:旋轉字串
class Solution: # @param s: a list of char # @param offset: an integer # @return: noth
LintCode 8---旋轉字符串
main col pub void 形式 fse ati tar end /* 給定一個字符串(以字符數組的形式給出)和一個偏移量,根據偏移量原地旋轉字符串(從左向右旋轉) */ public class Lint8 { public static v
8、旋轉字串
題目描述 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例 挑戰 在陣列上原地旋轉,使用O(1)的額外空間 程式碼實現: cla
經典演算法面試題目-判斷s2是否是s1的旋轉字串(1.8)
題目 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write co
《CTCI》1.8 呼叫一次isSubstring判斷旋轉字串
《CITI》P116 1 陣列與字串 題目: 1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given two
LintCode 旋轉字串
沒有通過,不知道什麼原因! class Solution { public: void recoverRotatedSortedArray(vector<int> &num
字串移位 類似[LintCode]8
對於一個字串,請設計一個演算法,將字串的長度為len的字首平移到字串的最後。 給定一個字串A和它的長度,同時給定len,請返回平移後的字串。 測試樣例: "ABCDE",5,3 返回:"DE
LintCode(easy)旋轉字串(!!!我有史以來解決的問題最快的一次,心酸流淚)
class Solution { public: /** * @param str: a string * @param offset: an integer *
LintCode:旋轉字串
Python class Solution: # @param s: a list of char # @param offset: an integer # @retu
lintcode 170旋轉鏈表
while struct images lac nbsp color 計算 span col 描述 給定一個鏈表,旋轉鏈表,使得每個節點向右移動k個位置,其中k是一個非負數 樣例 思路 計算鏈表個數len,然後先依次向右移動K個位置然後將後K%len個數字移動到前邊來
劍指offer之左旋轉字串
1.題目描述 組合語言中有一種移位指令叫做迴圈左移(ROL),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於一個給定的字元序列S,請你把其迴圈左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,要求輸出迴圈左移3位後的結果,即“XYZdefabc”。是不是很簡單?
Shell 指令碼8種字串擷取
Linux 的字串擷取很有用。有八種方法。 假設有變數 var=http://www.aaa.com/123.htm. 1. # 號擷取,刪除左邊字元,保留右邊字元。 程式碼如下: echo ${var#*//} 其中 var 是
劍指offer -- 左旋轉字串
題目描述 組合語言中有一種移位指令叫做迴圈左移(ROL),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於一個給定的字元序列S,請你把其迴圈左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,要求輸出迴圈左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK
php iconv() utf-8 編碼字串轉中文GB2312出錯的問題
PHP iconv 函式轉gb2312的bug解決方法 問題:發現iconv在轉換字元"—"到gb2312時會出錯: iconv( "UTF-8", "gb2312//IGNORE" , $data) ignore的意思是忽略轉換時的錯誤,如果沒有ignore引數,所有該字元後面