Problem:
Write a function that reverses a string. The input string is given as an array of characters char[].
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
You may assume all the characters consist of printable ascii characters.
Example 1:
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Example 2:
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
思路:
Solution (C++):
void reverseString(vector<char>& s) {
int n = s.size();
for (int i = 0; i < n/2; ++i) {
swap(s[i], s[n-1-i]);
}
}
性能:
Runtime: 164 ms Memory Usage: 13 MB
思路:
Solution (C++):
void reverseString(vector<char>& s) {
int i = 0, j = s.size()-1;
while (i < j) {
int a = int(s[i]), b = int(s[j]);
a = a + b;
b = a - b;
a = a - b;
s[i++] = char(a), s[j--] = char(b);
}
}
性能:
Runtime: 52 ms Memory Usage: 13 MB