Leetcode 344. 反转字符串

1.题目描述

编写一个函数,其作用是将输入的字符串反转过来。

示例 1:

输入: "hello"
输出: "olleh"

示例 2:

输入: "A man, a plan, a canal: Panama"
输出: "amanaP :lanac a ,nalp a ,nam A"

 

2.复杂解法

//string转化为vector数组处理
//当时不知道string可以直接下标访问。。
class Solution {
public:
    string reverseString(string s) {
        //直接返回
        if(s.size()==0 || s.size()==1) return s;
        
        vector<char> temp;
        //string to vector<char>
        for(auto a : s){
            temp.push_back(a);
        }
        //reverse
        int size = temp.size();
        for(int i = 0; i<=size/2-1;++i){
            swap(temp[i],temp[size-1-i]);
        }
        //vector<char> to string
        string res;
        for(auto b : temp){
            res += b;
        }
        return res;
    }
};

3.简洁解法

  • string可以直接用下标或迭代器访问字符串中的字母。
class Solution {
public:
    string reverseString(string s) {
        int sz = s.size();
        for (int i = 0; i < sz/2; ++i){
            swap(s[i], s[sz-i-1]);
        }
        return s;
    }
};

 

posted @ 2018-12-17 17:20  Timothy_prayer  阅读(193)  评论(0编辑  收藏  举报