LC0058 左旋轉字串

2021-10-04 18:42:18 字數 2400 閱讀 4303

菜鳥表示想看看演算法。

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串"abcdefg"和數字2,該函式將返回左旋轉兩位得到的結果"cdefgab"。

示例 1:

輸入: s = 「abcdefg」, k = 2

輸出: 「cdefgab」

示例 2:

輸入: s = 「lrloseumgh」, k = 6

輸出: 「umghlrlose」

限制:

1 <= k < s.length <= 10000

「無中生有」。定義一新變數,將字串從n開始依次賦值給新變數,取餘

操作使得變數又得以接收到還未被接收的起始字元。

下面來看看其他作者的解釋,幫助我們理解。

// c++

class

solution

};

# python 

class

solution

:def

reverseleftwords

(self, s:

str, k:

int)

->

str:

n =len(s)

res =

''for i in

range

(k, k + n)

: res += s[i % n]

return res

class

solution

(object):

defreverseleftwords

(self, s, n)

:"""

:type s: str

:type n: int

:rtype: str

"""if n >

len(s)

ornot s:

return

'' s =

list

(s)def

reverse

(start, end)

:while start < end:

# 旋轉

s[start]

, s[end]

= s[end]

, s[start]

start +=

1 end -=

1 length =

len(s)-1

reverse(

0, n-1)

reverse(n,length)

reverse(

0, length)

return

''.join(s)

# python

class

solution

:def

reverseleftwords

(self, s:

str, k:

int)

->

str:

n =len(s)

s = s + s

return s[k:n + k]

其他切片做法。

# python

# 字串拼接,效率不高,將建立額外記憶體,消耗記憶體空間。

class

solution

(object):

defreverseleftwords

(self, s, n)

:"""

:type s: str

:type n: int

:rtype: str

"""return s[n:

]+ s[

:n]

# python

# 相比'+',join更高效且只申請一次記憶體。

class

solution

(object):

defreverseleftwords

(self, s, n)

:"""

:type s: str

:type n: int

:rtype: str

"""return

''.join(

[s[n:

],s[

:n]]

)

左旋轉字串

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