Task4:LeetCode1:twoSum; LeetCode344:Reverse String;LeetCode151:Reverse Words in a String

1. Two Sum(两个数求和)

class Solution:
    def twoSum(self, nums: 'List[int]', target: int) -> 'List[int]':
        dicti = {}
        for i, n in enumerate(nums):
            if n in dicti:
                return [dicti[n],i]
            dicti[target-n] = i

344.Reverse String(反转字符串)

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        length = len(s)  
        for i in range(length//2):
            s[i],s[length-1 - i] = s[length-1 - i], s[i]

151.Reverse Words in a String(翻转字符串里的单词)

在此题中有两种思路,但是不知道为什么第一种思路在spyder中可以运行成功在LeetCode里提交的时候不能成功。

思路一是先将字符串提取为字符串列表,然后将字符串置为空,最后在字符串列表中倒序将单个字符串拼接在字符串s中;

思路二是先将字符串倒序转换为一个个的字符列表,然后对字符列表中以空格为界将单个字符串再正序。

class Solution151_1:#思路1
    def reverseWords(self, s: str) -> str:
        list_str = s.split()
        s = ""
        for i in range(len(list_str)-1, -1, -1):
            s += list_str[i]+" "
         

class Solution151_2:#思路2
    def reverseWords(self, s: str) -> str:
        s = list(" ".join(s.split()))[::-1]#将字符串转换为一个个的字符列表
        i = 0 
        while i < len(s):
            start = i 
            while i < len(s) and s[i]!= ' ':
                i += 1
            end = i - 1
            while start < end:
                s[start], s[end] = s[end], s[start]
                start += 1; end -= 1
            i += 1
        return "".join(s)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值