菜鳥表示想看看演算法。
字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串"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...