左旋轉字串

2021-07-25 19:33:08 字數 1413 閱讀 9785

題目是從  這裡得到的。

定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部,如把字串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...