commit
7de8661406
@ -241,4 +241,5 @@
|
|||||||
* [Palindrome](https://github.com/TheAlgorithms/Java/blob/master/strings/Palindrome.java)
|
* [Palindrome](https://github.com/TheAlgorithms/Java/blob/master/strings/Palindrome.java)
|
||||||
* [Pangram](https://github.com/TheAlgorithms/Java/blob/master/strings/Pangram.java)
|
* [Pangram](https://github.com/TheAlgorithms/Java/blob/master/strings/Pangram.java)
|
||||||
* [ReverseString](https://github.com/TheAlgorithms/Java/blob/master/strings/ReverseString.java)
|
* [ReverseString](https://github.com/TheAlgorithms/Java/blob/master/strings/ReverseString.java)
|
||||||
|
* [Rotation](https://github.com/TheAlgorithms/Java/blob/master/strings/Rotation.java)
|
||||||
* [Upper](https://github.com/TheAlgorithms/Java/blob/master/strings/Upper.java)
|
* [Upper](https://github.com/TheAlgorithms/Java/blob/master/strings/Upper.java)
|
||||||
|
64
strings/Rotation.java
Normal file
64
strings/Rotation.java
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package strings;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a string, moving several characters
|
||||||
|
* in front of the string to the end of the string.
|
||||||
|
* For example, move the two characters'a' and 'b' in
|
||||||
|
* front of the string "abcdef" to the end of the string,
|
||||||
|
* so that the original string becomes the string "cdefab"
|
||||||
|
*/
|
||||||
|
public class Rotation {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
assert rotation("abcdef", 2).equals("cdefab");
|
||||||
|
|
||||||
|
char[] values = "abcdef".toCharArray();
|
||||||
|
rotation(values, 2);
|
||||||
|
assert new String(values).equals("cdefab");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move {@code n} characters in front of given string to the end of string
|
||||||
|
* time complexity: O(n)
|
||||||
|
* space complexity: O(n)
|
||||||
|
*
|
||||||
|
* @param s given string
|
||||||
|
* @param n the total characters to be moved
|
||||||
|
* @return string after rotation
|
||||||
|
*/
|
||||||
|
public static String rotation(String s, int n) {
|
||||||
|
return s.substring(n) + s.substring(0, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move {@code n} characters in front of given character array to the end of array
|
||||||
|
* time complexity: O(n)
|
||||||
|
* space complexity: O(1)
|
||||||
|
*
|
||||||
|
* @param values given character array
|
||||||
|
* @param n the total characters to be moved
|
||||||
|
*/
|
||||||
|
public static void rotation(char[] values, int n) {
|
||||||
|
reverse(values, 0, n - 1);
|
||||||
|
reverse(values, n, values.length - 1);
|
||||||
|
reverse(values, 0, values.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse character array
|
||||||
|
*
|
||||||
|
* @param values character array
|
||||||
|
* @param from begin index of given array
|
||||||
|
* @param to end index of given array
|
||||||
|
*/
|
||||||
|
public static void reverse(char[] values, int from, int to) {
|
||||||
|
while (from < to) {
|
||||||
|
char temp = values[from];
|
||||||
|
values[from] = values[to];
|
||||||
|
values[to] = temp;
|
||||||
|
from++;
|
||||||
|
to--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user