美文网首页Leetcode刷题笔记
第六天 Reverse String

第六天 Reverse String

作者: 业余马拉松选手 | 来源:发表于2018-08-26 01:12 被阅读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);
        }
    }
    

    相关文章

      网友评论

        本文标题:第六天 Reverse String

        本文链接:https://www.haomeiwen.com/subject/mwuniftx.html