【LeetCode】344. Reverse String

来源:互联网 发布:淘宝最新规则在哪里看 编辑:程序博客网 时间:2024/06/12 01:39

问题描述

问题链接:https://leetcode.com/problems/reverse-string/#/description

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

Example:

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

我的代码

探索过程

这么简单的需求,我本来以为肯定一把过啊,于是写出了下面的代码。

public class Solution {    public String reverseString(String s) {        /*        可能有内建的函数,但是我不记得了,就用charAt遍历吧。        */        String reverStr = "";        int len = s.length();        for(int i = len - 1; i >= 0; i--){            reverStr += s.charAt(i);        }        return reverStr;    }}

提交以后居然报告我运行超时,原因是最后的一个testcase是一个超长的文本。我的那句reverStr += s.charAt(i);肯定效率差极了。

得想办法提高一下效率。先新建一个char数组,然后倒序赋值,最后转成String返回。这次就通过了。

通过的代码

public class Solution {    public String reverseString(String s) {        /*        可能有内建的函数,但是我不记得了,就用charAt遍历吧。        */        int len = s.length();        char[] chs = new char[len];        for(int i = len - 1; i >= 0; i--){            chs[len - 1 - i] += s.charAt(i);        }        return new String(chs);    }}

打败了22.3%的Java代码。再到讨论区去学习一个。

讨论区

[JAVA] Simple and Clean with Explanations [6 Solutions]

链接地址:https://discuss.leetcode.com/topic/43296/java-simple-and-clean-with-explanations-6-solutions

这篇给出了6种方法,还进行了复杂度的分析比较,奈何我没耐心看完(苦笑)。

Java- easiest method- 2-line code, attached another method

链接地址:https://discuss.leetcode.com/topic/44869/java-easiest-method-2-line-code-attached-another-method

嗯,我果然没错,是有内建方法的。

//method 1: use StringBuilderpublic String reverseString(String s) {    StringBuilder sb = new StringBuilder(s);    return sb.reverse().toString();}//method 2: use swap methodpublic String reverseString(String s){    if(s == null || s.length() == 0)        return "";    char[] cs = s.toCharArray();    int begin = 0, end = s.length() - 1;    while(begin <= end){        char c = cs[begin];        cs[begin] = cs[end];        cs[end] = c;        begin++;        end--;    }    return new String(cs);}
1 0
原创粉丝点击