344.Reverse String
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"]
解题思路:
两头开始,依次交换字符,直到中间位置为止。
/*
执行用时 : 64 ms, 在Reverse String的C提交中击败了96.47% 的用户
内存消耗 : 13.7 MB, 在Reverse String的C提交中击败了75.42% 的用户
*/
void reverseString(char* s, int sSize){
int i = 0,j = sSize-1;
char temp;
while(i < j){
temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;j--;
}
}
/*
执行用时 : 72 ms, 在Reverse String的C提交中击败了94.85% 的用户
内存消耗 : 13.8 MB, 在Reverse String的C提交中击败了74.86% 的用户
*/
void reverseString(char* s, int sSize){
int i;
char temp;
for(i = 0; i < sSize; i++, sSize--){
temp = *(s + i);
*(s + i) = * (s + sSize- 1);
* (s + sSize - 1) = temp;
}
return s;
}
//执行时间20ms--范例
/*
本人电脑提交的数据:
执行用时 : 64 ms, 在Reverse String的C提交中击败了98.22% 的用户
内存消耗 : 13.6 MB, 在Reverse String的C提交中击败了75.42% 的用户
*/
void reverseString(char* s, int sSize) {
int i;
char temp;
for(i=0;i<sSize/2;i++){
temp=s[i];
s[i]=s[sSize-i-1];
s[sSize-i-1]=temp;
}
}
后记:
掌握各种不同的对地址的引用方式。