344.反转字符串 (字符串专题)

2020-4-16 第一次 难度:简单

核心要求:不使用额外的空间,原地修改数组,O(1)的空间复杂度

c++代码

法1:
#include<string>
#include<algorithm>
class Solution {
public:
    void reverseString(vector<char>& s) {
        reverse(s.begin(),s.end());
    }
};


c++法2:
class Solution {
public:
    void reverseString(vector<char>& s) {
        int len = s.size();
        for(int i=0;i<len/2;i++)
        {
            if(s[i]==s[len-1-i]) continue;
            char temp =s[i];
            s[i]=s[len-1-i];
            s[len-1-i]=temp;
        }
    }
};

Python代码

双指针法:

    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        i,j = 0,len(s)-1
        while i<j:
            s[i],s[j]=s[j],s[i]
            i+=1
            j-=1

一步法:

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        s[:] = s[::-1]

递归+双指针法:

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        # double pointer and recursion
        def recur_(s, i,j):
            if i>=j:
                return 
            else:
                s[i],s[j] = s[j],s[i]
                recur_(s,i+1,j-1)
        recur_(s,0,len(s)-1)

python代码参考:反转字符串

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大富翁 yi ge da fu weng zheng zdi lu shang zou zhe 一个大富翁正在路上...
    钟小飒阅读 386评论 0 0
  • 舞 会 xing xing hao ba xingxing hao ba “行行好吧,行行好吧… wan shan...
    钟小飒阅读 623评论 0 0
  • 作者注:以下文字观点未必准确,并且有些尚未完成,仅仅作为探索。 这幅字画是甲骨文篆字楷书北欧文字及现代的一些标志的...
    共通语言阅读 2,677评论 0 2
  • di shi san zhang qing dou lu shi pan bian第十三章 青豆律师叛变 zhe...
    钟小飒阅读 553评论 0 0
  • 奇怪的外星人 da du lang mei you tao dao shen me zheng daidai d...
    钟小飒阅读 347评论 0 0