1.2 Implement a function void reverse(char *str) in C or C++ which reverses a null-terminated string.
這道題讓我們用C++或C語言來翻轉一個字串,不算一道難題,在之前那道Reverse Words in a String 翻轉字串中的單詞中用到了這個函式,跟那道題比起來,這題算簡單的了。C語言的版本要比C++的稍微複雜一些,應為string類整合了很多有用的功能,比如得到字串的長度,用下標直接訪問啊等等,C語言實現的時候要注意首先要用一個while迴圈來找到最後一個字元,然後再往中間走。參見程式碼如下:
C++:
class Solution { public: void reverse(string &s) { int left = 0, right = s.size() - 1; while (left < right) { char tmp = s[left]; s[left++] = s[right]; s[right--] = tmp; } } };
C
class Solution { public: void reverse(char *str) { char *right = str; if (str) { while (*right) ++right; --right; while (str < right) { char tmp = *str; *str++ = *right; *right-- = tmp; } } } };