码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 344.Reverse String

时间:2016-07-31 00:16:25      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

题意:

Write a function that takes a string as input and returns the string reversed.

Example:
Given s = "hello", return "olleh".

实现字符串的反转。

刚开始时,我是直接string fan,然后给fan赋值,发现是输出的是空的字符串。百思不得其解。之后使用char fan[length],然后再赋值,得到了反转的结果。但是少考虑了当s=“”时,输出结果不正确的情况。之后改正了错误,将fan初始化为s,之后再用for循环反转,得到了正确的答案。代码如下:

class Solution {
public:
    string reverseString(string s) {
        int length = s.length();
        string fan = s;
        for(int i = 0; i < length ; i++)
        fan[i] = s[length-1-i];
        return fan;
    }
};

代码的效率图如下:

技术分享

果然比较笨的方法还是效率不高。

之后想string库里的reverse函数可能算法更好,效率更高,代码写成如下:

class Solution {
public:
    string reverseString(string s) {
        reverse(s.begin(),s.end());
        return s;
    }
};

代码确实比较短,但是效率并没有得到提高,还是跟for循环的一样,说明reverse函数可能也是用循环写的。

然后想到循环可以剪短一半:

class Solution {
public:
    string reverseString(string s) {
        int length = s.length();
        for(int i = 0; i < length/2 ; i++)
        swap(s[i],s[length-1-i]);
        return s;
    }
};

 然而效果并不理想,还是跟原来一样。

查看了discuss,发现大部分的回答也就是这样。

总结:

这道题巩固了string的知识,在此之前还认为可以直接修改string类型的数据。

 

Leetcode 344.Reverse String

标签:

原文地址:http://www.cnblogs.com/Attenton/p/5722027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!