[CareerCup] 1.2 Reverse String 翻轉字串

Grandyang發表於2015-07-15

 

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;
            }
        }
    }
};

 

相關文章