【牛客题霸官方题解】N103 反转字符串

反转字符串

http://www.nowcoder.com/questionTerminal/c3a6afee325e472386a1c4eb1ef987f3

文字题解

解法一:

开辟一个和str长度大小相同的一个字符串ans,把传入的str倒序赋值到ans字符串上, 时间复杂度,额外空间复杂度

c++版本代码:

class Solution {
public:
    string solve(string str) {
        string ans = str;
        int len = str.length();
        for(int i = 0 ; i < len ;i++)
        {
                ans[i] = str[len-1-i];
        }
        return ans;
    }
};

java版本代码:

import java.util.*;
public class Solution {
    public String solve (String str) {
        char[] ans = str.toCharArray();
        int len = str.length();
        for(int i = 0 ; i < len ;i++)
        {
                ans[i] = str.charAt(len-1-i);
        }
        return new String(ans);
    }
}

python版本代码:

class Solution:
    def solve(self , str ):
        ans=""
        Len = len(str)
        for i in range(0,Len):
            ans+=str[Len-1-i]
        return ans

解法二:

原地交换,,注意:交换进行的次数是
时间复杂度,额外空间复杂度

c++版本代码:

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

java版本代码:

import java.util.*;
public class Solution {
    public String solve (String str) {
        char[] cstr = str.toCharArray();
        int len = str.length();
        for(int i = 0 ; i < len/2 ;i++)
        {
                char t = cstr[i];
                cstr[i] = cstr[len-1-i];
                cstr[len-1-i]=t;
        }
        return new String(cstr);
    }
}

解法三:

直接调用库函数

c++版本代码:

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

java版本代码:

import java.util.*;
public class Solution {
    public String solve (String str) {
        StringBuffer sb =new StringBuffer(str);//此方法针对的是io流,不能针对字符串。
        return sb.reverse().toString();
    }
}

python版本代码:

class Solution:
    def solve(self , str ):
        return str[::-1]
全部评论
最后一个方法惊人
1 回复 分享
发布于 2021-06-01 12:34
貌似一直都是借助StringBuffer的reverse()方法翻转字符串的。主要是太简单没有必要写for循环,坏处就是需要StringBuffer类。
1 回复 分享
发布于 2023-02-15 23:50 江苏
好家伙,还可以直接调用库函数
1 回复 分享
发布于 2021-07-04 22:25
方法二java的for循环体可直接写成ch[i] = str.charAt(len - 1 - i);ch[len - 1 - i] = str.charAt(i);
点赞 回复 分享
发布于 2023-11-07 13:23 广东
解法一和解法二的java版本空间复杂度不是一样的吗?解法二空间复杂度不也是O(n)吗?请大佬赐教
点赞 回复 分享
发布于 2021-11-13 10:46
挺好的
点赞 回复 分享
发布于 2021-04-16 10:34

相关推荐

感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从今天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-25 17:22
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
43
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务