生活随笔
收集整理的這篇文章主要介紹了
翻转字符串
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目:給定一個(gè)字符類型的數(shù)組chas,請(qǐng)?jiān)趩卧~間做逆序調(diào)整,只要做到單詞順序逆序即可,對(duì)空格的位置沒有特別要求。例如把chas看成字符串為“I love you”,調(diào)整成“you love I”。
補(bǔ)充題目:給定一個(gè)字符類型的數(shù)組chas和一個(gè)整數(shù)size,請(qǐng)把大小為size的左半?yún)^(qū)整體移到右半?yún)^(qū),右半?yún)^(qū)整體移到左邊。例如,如果把chas看作字符串“ABCDE”,size = 3,調(diào)整成“DEABC”。
基本思路:
原問題: 首先對(duì)整個(gè)數(shù)組逆序,然后遍歷數(shù)組找到每一個(gè)單詞,將每個(gè)單詞里的字符進(jìn)行逆序即可
補(bǔ)充問題:?先把chas[0…size-1]部分逆序,再把chas[size…N-1]部分逆序,最后再將整體逆序即可。
?
要求:如果字符串長度為N,兩道題都要求時(shí)間復(fù)雜度為O(N),額外空間復(fù)雜度為O(1)
"""原問題"""def rotate(chas):if chas == None or len(chas) == 0:returnreverse(chas,0,len(chas)-1)left = -1right = -1for i in range(len(chas)):if chas[i]!=' ':if i==0 or chas[i-1] == ' ':left = ielse:left = leftif i==len(chas)-1 or chas[i+1] == ' ':right = ielse:right = rightif left!=-1 and right!=-1:reverse(chas,left,right)left = -1right = -1def reverse(chas,left,right):if chas == None or len(chas) == 0:return while left < right:chas[left],chas[right]= chas[right],chas[left]left += 1right -= 1
"""補(bǔ)充問題"""def rotate1(chas,size):if chas == None or len(chas) == 0:return reverse(chas,0,size-1)reverse(chas,size,len(chas)-1)reverse(chas,0,len(chas)-1)
?
總結(jié)
以上是生活随笔為你收集整理的翻转字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。