4/14天打卡:双指针
344. 反转字符串
数组 | 双指针 |
---|
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[ ] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
示例 1:
输入:[“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2:
输入:[“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]
- 常规解法
直接翻转
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
return s.reverse()
- 二分法
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left=0
right=len(s)-1
while left<=right:
if left==right:
return s
if left<right:
s[left],s[right]=s[right],s[left]
left+=1
right-=1
557. 反转字符串中的单词 III
数组 | 双指针 | 二分查找 |
---|
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
- 解法1
先总体翻转;
然后将字符串转换成列表,将每个单词固定成最小单位;
然后在将列表翻转同时转化成字符串
class Solution:
def reverseWords(self, s: str) -> str:
num=''.join(reversed(s))
x=num.split(' ')
result=' '.join(reversed(x))
return result
提交后看了下题解
1.行数虽有不同,但思路基本都差不多
2.官方题解没给python的 …😂🤣
--------------------------END:那这题就这样吧-------------------------------