Leetcode刷题笔记

第六天 Reverse String

2018-08-26  本文已影响1人  业余马拉松选手

第六天了,这次是根据面试出现几率最高第100题里选择的,好吧,继续选择了一道比较简单的,而且是之前用Java写过的。

https://leetcode-cn.com/problems/reverse-string/description/

字符串反转,嗯,实在没想到pyton可以有这么作弊的写法:

class Solution:
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        return s[::-1]

开始我第一次写的时候,还是依次遍历出来字符,放到一个列表,然后用列表逆置的方法,最后在join成字符串。

class Solution:
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        ret = ""
        arr = []
        for c in s:
            arr.append(c)
        for item in reversed(arr):
            ret += ret.join(item)
        return ret

嗯,今天刷题时忽然感到,用python的一种深深的“作弊”感。😂

不过就算是用python的内置的方法,跑完所有的test case也需要44ms。而之前用java写的却只要5ms,😭

其实正常比较合理的思路,应该是首尾交换的思路:

public class Solution {
    public String reverseString(String s) {
        if (s == null) return null;
        if (s.length() == 0 || s.length() == 1) return s;
        char[] chars = s.toCharArray();
        int i = 0;
        int j = chars.length-1;
        while (i<j){
            char temp = chars[i];
            chars[i++] = chars[j];
            chars[j--] = temp;
        }
        return new String(chars);
    }
}
上一篇下一篇

猜你喜欢

热点阅读