剑指 Offer 61. 扑克牌中的顺子 和 剑指 Offer 58 - I. 翻转单词顺序

CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:自动驾驶技术学习记录
话题描述:自动驾驶是当前最火热的技术之一,吸引了无数的开发者与学习者融入其中。然而,自动驾驶技术是系统硬件平台与人工智能、物联网、大数据、云计算等新一代信息技术深度融合的产物,具有知识新、内容杂、难度深、缺少系统教程等特点,让许多开发者眼花缭乱。
本话题通过记录分享自动驾驶相关技术,为大家提供相互学习与交流的平台。话题分享与讨论的技术点包括不限于:自动驾驶算法、自动驾驶系统基础架构、智能驾驶交互技术、虚拟仿真、自动化测试、无人系统与车辆平台、自动驾驶计算平台与传感器等。

剑指 Offer 61. 扑克牌中的顺子

从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
在这里插入图片描述

解题思路

根据数组中的五张牌进行讨论:
1、五张无重复的牌,若牌面的最大值减非0的最小值小于5,则返回真,否则返回假;
2、若存在重复牌,且数组中无0,返回假;
3、若数组中存在0,同时存在其他数值的重复牌,返回假,反之(也就是重复牌中只存在0),且最大值减非0的最小值小于5,则为真。

python3代码

class Solution:
    def isStraight(self, nums: List[int]) -> bool:
        #通过集合判断牌面数值有无重复
        nums_set=set(nums)
        set_list=list(nums_set)
        # 找出非0的最小值
        maxv=max(nums)
        minv=14
        for i in nums:
            if i<minv and i!=0:
                minv=i
        # 牌面无重复
        if len(set_list)==5:
            if maxv-minv<5:
                return True
            else:
                return False
        else:  #牌面存在重复牌
            if 0 in set_list:  #0存在于数组中
                dic={}
                for i in nums:
                    if i not in dic.keys():
                        dic[i]=1
                    else:
                        if i !=0:  #重复牌不为0
                            return False
                        dic[i]=dic[i]+1
                if maxv-minv<5:
                    return True   
                else:
                    return False       
            else:  #重复牌为其他数值牌
                return False 
        

在这里插入图片描述

剑指 Offer 58 - I. 翻转单词顺序

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
在这里插入图片描述

解题思路

1、去掉字符串中头尾的空格;
2、根据空格进行分割,这里需要注意s.split(’ ‘)和s.split()在多个连续空格下的区别: s.split(’ ')遇到多个连续空格会依次进行划分,产生空字符串;s.split()将多个连续空格当成一个空格进行划分,不会有空字符串的产生。

python3代码

class Solution:
    def reverseWords(self, s: str) -> str:
        # 去掉头尾空格
        s=s.strip()
        # 按空格进行划分
        word_temp = s.split()
        #逆序重组字符串
        i=len(word_temp)-1
        s_new=''
        while i>=0:
            if i>0:
                s_new = s_new+word_temp[i]+' '
            else:
                s_new = s_new+word_temp[i]
            i=i-1
        return s_new

在这里插入图片描述

CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值