Stay Hungry, Stay Foolish

python实现 字符串/单词的旋转(翻转)

主要实现快速字符转翻转倒置,将指定的前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
喜欢 (1)
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in C:\inetpub\wordpress\wp-content\themes\XHBlog\comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址