主要实现快速字符转翻转倒置,将指定的前n个字符移动到字符串结尾,翻转中英文单词顺序
上python代码:
class ReverseString:
string=[]
def __init__(self,string):
self.string=list(string)
def reset(self,string):
self.string=list(string)
def reverse(self,startidx=0,endidx=None):
if endidx is None:
endidx=len(self.string)-1
if startidx>=endidx:
print('out:',startidx, endidx)
return
strlen=endidx-startidx+1
center=strlen//2
for i in range(center):
tmp=self.string[endidx-i]
self.string[endidx - i]=self.string[startidx+i]
self.string[startidx+i]=tmp
def get_reverse_result(self):
return ''.join(self.string)
def move_front_n_to_end(self,n=None):
if n is None:
n=len(self.string)
strlen = len(self.string)
if n>strlen:
n=n%strlen
self.reverse(0,n-1)
self.reverse(n, strlen-1)
self.reverse(0, strlen-1)
def reverse_word(self):
strlen = len(self.string)
findstart=False
for i in range(strlen):
if self.string[i]!=' ' and not findstart:
findstart=True
st=i
if self.string[i]==' ' and findstart:
ed=i-1
findstart=False
self.reverse(st,ed)
if findstart:
self.reverse(st, strlen-1)
self.reverse(0, strlen-1)
测试:
rv=ReverseString('客上天然居')
rv.reverse()
print(rv.get_reverse_result())
rv.reset('hello word!')
rv.reverse_word()
print(rv.get_reverse_result())
rv.reset('789123456')
rv.move_front_n_to_end(3)
print(rv.get_reverse_result())
输出:
居然天上客
word! hello
123456789
喜欢 (0)赏
感谢您的支持,我会继续努力的!
扫码打赏,你说多少就多少
打开支付宝扫一扫,即可进行扫码打赏哦