Write a method to rotate an array at n without using O(1) space. How would you test this method
Anonimo
- Reverse the array from 0 to array length - Reverse the array from position 0 to n and n+1 to array length - When doing the reverse (swapping elements) it can be done with no extra space using XOR public string RotateOnIndex(string word, int index) { if (String.IsNullOrWhiteSpace(word)) return word; if (index (word.Length - 1)) return String.Empty; char[] letters = word.ToCharArray(); Reverse(letters, 0, letters.Length - 1); Reverse(letters, index, letters.Length - 1); Reverse(letters, 0, index - 1); return new String(letters); } private void Reverse(char[] letters, int start, int end) { while (start < end) { letters[start] ^= letters[end]; letters[end] ^= letters[start]; letters[start] ^= letters[end]; start++; end--; } }