• LeetCode344---Reverse String


    开始刷leetcode了,记录做过的题目以及做题过程思路的整理,还会贴出自己认为的别人写的好的代码,会不定期的更新~~~~

    Question Content:

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

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

    Solution:

    第一种解法:最直接,最容易想出的解决办法是直接循环字符串,然后倒序输出,代码如下:

    public class Solution {
        public String reverseString(String s) {
           String result = "";
               for (int i = s.length()-1; i >=0; i--) {
                   result+=s.charAt(i);
            }
               return result;
        }
    }

    提交的时候发现超时了。。。

    后来尝试换一种拼接方式,使用StringBuilder,Stringbuffer也是可以的,在不考虑线程安全的情况下,StringBuilder的效率更高;

    使用StringBuilder的append方法,代码如下:

    public class Solution {
        public String reverseString(String s) {
           StringBuilder sbBuilder = new StringBuilder();
               for (int i = s.length()-1; i >=0; i--) {
                   sbBuilder.append(s.charAt(i));
            }
               return sbBuilder.toString();
            }
    }

    提交成功。

    时间复杂度都是o(n),但是使用“+”拼接的速度更慢

    第二种解法:考虑减少时间复杂度,定义两个数组下标,依次交换字符串的第一个字符和最后一个字符,再输出新的字符串即可,代码如下:

    public class Solution {
        public String reverseString(String s) {
           char[] tmparray = s.toCharArray();
            int i = 0;
            int j = tmparray.length-1;
            char tmp = ' ';
            while(i<j){
                tmp = s.charAt(i);
                tmparray[i] = tmparray[j];
                tmparray[j] = tmp;
                i++;
                j--;
            }    
            return String.valueOf(tmparray);
        }
    }

    这种解法循环次数减少一半,降低了时间复杂度,相应的会增加空间复杂度。

  • 相关阅读:
    传统金融和互联网金融
    集团培训
    Javascript和JQuery之间的联系
    this和$(this)区别
    原生JavaScript支持6种方式获取元素
    绩效考核
    web服务端安全之分布式拒绝服务攻击
    web服务端安全之暴力破解
    web服务端安全之权限漏洞
    web服务端安全之文件上传漏洞
  • 原文地址:https://www.cnblogs.com/miaowu1314/p/6132934.html
Copyright © 2020-2023  润新知