劍指刷題 面試題58 左旋轉字串

2021-10-06 05:49:52 字數 2094 閱讀 4408

題目:

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

解法:

方法一:字串切片

獲取字串 s[n:]切片–從n開始到最後和 s[:n] 切片-從開頭取到n(不包括n),使用 「+」 運算子拼接並返回即可。

class

solution

:def

reverseleftwords

(self, s:

str, n:

int)

->

str:

return s[n:

]+ s[

:n]

方法二:列表遍歷拼接

輸出的結果有雙引號,把雙引號去除?

join這個方法,將可迭代的資料型別,轉為字串或者bytes,沒錯可以轉為bytes型別。注意這個可迭代的資料中的元素必須是相同型別的。

我們實現join方法就是,將可迭代的物件先轉為list型別,然後再執行上面那段**(for迴圈那段)。這樣大概能完成jion方法了

join方法最終返回值為str型別或者bytes型別,返回什麼型別,要看是哪種型別的資料呼叫了join方法,比如上面的那些**,全是由字串呼叫,所以返回的也都是字串型別。

例子:

# 修改過後**

class

solution

(object):

defreverseleftwords

(self, s, n)

: res=

for i in

range

(n,len

(s)):)

for i in

range(0

,n):

)return

''.join(res)

# 為了更加簡便可以進行求餘計算---但是求餘之後時間是變慢啦

class

solution

:def

reverseleftwords

(self, s:

str, n:

int)

->

str:

res =

for i in

range

(n, n +

len(s)):

len(s)])

return

''.join(res)

class

solution

(object):

defreverseleftwords

(self, s, n)

: b=

""for i in

range

(n,len

(s))

: b = b+s[i]

for i in

range(0

,n):

b = b+s[i]

return b

方法對比:

面試題58 題目二 左旋轉字串

面試題58 題目二 左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串 abcdefg 左旋轉2 位得到字串 cdefgab。思路 反轉三次字串 以 abcdefg 為例,我們可以把它分為 2部分。先分別翻轉這兩部分,於是就得到 bagfedc 接下來翻轉整個字...

面試題58 ii 左旋轉字串

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

面試題58 II 左旋轉字串

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