且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[CareerCup] 1.2 Reverse String 翻转字符串

更新时间:2021-12-17 06:53:13

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

本文转自博客园Grandyang的博客,原文链接:翻转字符串[CareerCup] 1.2 Reverse String ,如需转载请自行联系原博主。