1 旋转数组
reverse(nums,0,n-k-1);
reverse(nums,n-k,n-1);
reverse(nums,0,n-1);
2 旋转字符串
return A.length() == B.length() && (A + A).contains(B)
3 旋转链表
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(head == null || head.next == null) return head;
ListNode pHead = head;
int i = 0;
while(pHead.next != null && i < k ) {
pHead = pHead.next;
i++;
}
if(i < k) {
k = k%(i+1);
i=0;
pHead = head;
while(pHead.next != null && i < k ) {
pHead = pHead.next;
i++;
}
}
ListNode rk = head;
while(pHead.next!= null) {
pHead = pHead.next;
rk = rk.next;
}
if(rk.next == null) return head;
else {
pHead.next = head;
head = rk.next;
rk.next = null;
}
return head;
}
}