題目是從 這裡得到的。
定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部,如把字串abcdef左旋轉2位得到字串cdefab。
請實現字串左旋轉的函式,要求對長度為n的字串操作的時間複雜度為o(n),空間複雜度為o(1)。
關於這道題超級的解決過程鏈結 進入學習。而我這裡是用python解決了下。目前不知道bug會出現在**。反正是按要求得出結果了:
please input string:aaaaadd
please input n:4
addaaaa
please input string:abcdefg
please input n:3
defgabc
please input string:abcde
please input n:5
abcde
我現在見到問題,第一反應就是:根據目前我的水平和掌握的東西來要怎麼解決。首先想的就是用python來解決,大致想了一下思路思路,主要就是用split吧。不過一看又不對,反正簡單的思路就是單個取出來,移位,放到後面。
著手開始寫時,發現這不就是把前面的取出來,加到後面那部分嗎。牽扯到刪除,連線嗎?最後,python的方便和簡潔表現的淋漓盡致。是目前我通過這道題感覺的。
在看 裡面的那麼多方法和解析,指標乙個接乙個出來,後面演算法還一大堆。我用python如此簡單的達到要求了,不知道到底是好是壞。
# 基本思路:# 將字串for遍歷的放入陣列中temp1,temp2
# 用del對temp1刪除需要移動的字串部分
# 用del對temp2刪除不需要移動的字串部分
# 將兩部分鏈結起來就得到題目要求的左旋轉
defchange(str,n):
temp1=
temp2=
forsinstr:
deltemp1[0:n]
deltemp2[n:len(str)]
temp1.extend(temp2)
returntemp1
string=raw_input("please input string:")
num=raw_input("please input n:")
cs=change(string,
int(num))
print''.join(cs)
在回頭繼續看 ,細細想想大神們的初衷,再看看標題《程式設計師程式設計藝術》,我不禁又明白了些什麼。
程式真的,不僅是看起來這麼的複雜,有時它也確實是那麼的簡單。
藝術就是**。
左旋轉字串
題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 思想 旋轉三次 include include using namespace std v...
左旋轉字串
package com.string 旋轉字串 q 26 左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 public cla...
左旋轉字串
如abc,左旋1得到bca,左旋2得到cab o n k 的演算法 include using namespace std include include include include include include include include include include int main...