字符串旋转问题
三步反转法
(1)根据题意,将字符串分为几部分,每部分都是字符串(关键所在)
(2)对每一部分 分别进行反转
(3)最后,将上诉反转结果在给于整体反转
这种方法时间复杂度为O(n)
此方法为什么可行?
局部反转和整体反转抵消,导致局部还是原来的顺序,但是整体的顺序毕竟还是被改变了。局部不变整体变。
例1,将abcdef变成defabc
分析:
(1)此题字符串分成两部分即可
(2)对每部分进行反转
revearse(s, 0,count-1 );
revearse(s, count, s.length-1);
(3)对整体进行反转
revearse(s, 0, s.length-1);
例2,将I'm a student.旋转成student. a I'm
分析
(1)此题字符串应该分为3部分,怎么分是关键
(2)对每部分进行反转
(3)对整体进行反转