String or Array Rotation
字符串、数组的反转、逆序问题
三步翻转法
将一个字符串分成X
和Y
两个部分,在每部分字符串上定义反转操作,如X^T
,即把X的所有字符反转(如,X="abc"
,那么X^T="cba"
),那么就得到下面的结论:(X^TY^T)^T=YX
,显然就解决了字符串的反转问题。
例如,字符串 "abcdef"
,若要让"def"
翻转到"abc"
的前头,只要按照下述3个步骤操作即可:
首先将原字符串分为两个部分,即
X: "abc"
,Y: "def"
;将
X
反转,X -> X^T
,即得:abc -> cba
;将Y
反转,Y -> Y^T
,即得:def -> fed
。反转上述步骤得到的结果字符串
X^TY^T
,即反转字符串cbafed
的两部分(cba
和fed
)给予反转,cbafed
得到defabc
,形式化表示为(X^TY^T)^T=YX
,这就实现了整个反转。
https://segmentfault.com/a/1190000002694646
https://blog.csdn.net/u010016196/article/details/45126853
Array Rotate Template
相关问题:
Last updated