第六天 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);
}
}