1. 程式人生 > >LintCode 8 旋轉字串

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=

LintCode8 旋轉字串

題目來源:旋轉字串 題目描述: 給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例: 對於字串 “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引數,所有該字元後面