zoukankan      html  css  js  c++  java
  • 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);
        }
    }

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

  • 相关阅读:
    从零开始学习内网渗透之域环境的搭建
    ssrf漏洞学习(PHP)
    自己写的Weblogic的poc
    某CTF平台一道PHP代码审计
    某CTF平台一道PHP代码注入
    从xxe-lab来深入学习xxe漏洞
    Git常用命令
    一个简单的基于MINI2440开发板的启动代码
    面试题
    Linux多线程及线程同步简单实例
  • 原文地址:https://www.cnblogs.com/miaowu1314/p/6132934.html
Copyright © 2011-2022 走看看