标签:while main lis tps print ber values || start
class Solution {
public void reverse(char[] ch, int l ,int r) {
for ( ; l<r; l++,r--){
char t = ch[l];
ch[l] = ch[r];
ch[r] = t;
}
}
public void fun(String str, int n, int m){
if(str == null || str.length()==0) return;
m %= n;
char[] ch = str.toCharArray();
reverse(ch, 0, m-1);
reverse(ch, m, n-1);
reverse(ch, 0, n-1);
for(int i=0; i<ch.length; i++){
System.out.print(ch[i]);
}
}
public static void main(String[] args) {
String s = "abcdef";
new Solution().fun(s,6,4); //前四个字符移到末尾:efabcd
}
}
1244
257
Favorite
Share
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
Example:
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
Note:
Only constant extra memory is allowed.
You may not alter the values in the list‘s nodes, only nodes itself may be changed.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pre = dummy;
ListNode end = dummy;
while(end.next != null){
for(int i=0; i<k && end != null; i++) end = end.next;
if(end == null) break;
ListNode start = pre.next;
ListNode next = end.next;
end.next = null;
pre.next = reverse(start);
start.next = next;
pre = start;
end = pre;
}
return dummy.next;
}
public ListNode reverse(ListNode head){
ListNode pre = null;
while(head != null){
ListNode next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}
标签:while main lis tps print ber values || start
原文地址:https://www.cnblogs.com/Roni-i/p/11185170.html