Rotate an array in place
Problem:
Rotate a one-dimensional array of n elements to the right by k steps.
For instance, with n=7 and k=3, the array {a, b, c, d, e, f, g} is rotated to {e, f, g, a, b, c, d}.
For instance, with n=7 and k=3, the array {a, b, c, d, e, f, g} is rotated to {e, f, g, a, b, c, d}.
Solution:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| String reverse(String str, int i, int j) { char [] arr = str.toCharArray(); for (;i<j; i++, j--) { char temp = arr[i]; arr[i]=arr[j]; arr[j]=temp; } return String.valueOf(arr); } /** * Rotate the string to right by k chars * * @param str * @param n * @param k */ String rotate(String str, int n, int k) { //Reverse entire string str = reverse(str, 0 , n- 1 ); str = reverse(str, 0 , k- 1 ); str = reverse(str, k, n- 1 ); return str; } |
No comments:
Post a Comment