• [ 周赛总结 ] 第 185 场力扣周赛


    题目:

     

    总结:

    1. 比赛环境下紧张,难以写出较高质量的代码

    2. python基础遗忘,有的用法要现查文档

    3. 知识短板,比如第三题思路可以用状态机来解决,涉及到编译原理的内容。

    A: 重新格式化字符串

    • 算法:提取数字序列D,字母序列A,根据A、D的长度进行拼接。
    1. 当 D=[1,2,3,4],A=['a','b','c'] 的时候,结果为:"1a2b3c4"
    2. 当 D=[1,2,3],A=['a','b','c','d'] 的时候,结果为:"a1b2c3d"
    3. 当 D=[1,2,3],A=['a','b','c'] 的时候,结果为:"1a2b3c"或者"a1b2c3"
    4. 如何避免写三个判断语句呢?
    • 需要改进的地方:代码不够精简,逻辑重复的代码太多。
    • 优化:
      • class Solution(object):
            def reformat(self, s):
                import re
                ret = ''
        
                # 优化点1:正则匹配字母、数字
                a = re.findall(r'd',s)
                b = re.findall(r'[a-z]',s)
                # 优化点2:判断a,b长度,使得len(a)<=len(b)
                a,b = sorted([a,b],key=len)
                # 或者这样
                # a,b = (a,b) if len(a)<=len(b) else (b,a)
                i=0
                if len(b)-len(a)>1:
                    return ''
                # 优化点3:根据最长的数组b来遍历,若a位数不足,则后面补''来保证循环的正确。
                while i<len(b):
                    ret += b[i] + (a[i] if i<len(a) else '')
                    i+=1
                return ret

        参考:https://leetcode-cn.com/problems/reformat-the-string/comments/355658

    B: 点菜展示表

    • 算法:灵活运用字典,比如3号桌点了两个Ceviche,一个Fried Chicken,用字典来表示:
      • { 3 : {'Ceviche':2,'Fried Chicken':1} }
    • 面向对象的思路:把客人用餐的桌子定义为一类Tables,Tables有它的编号 和 点的菜。

       如果想要点菜,还有点菜的功能:setItem()

      • class Tables():
            def __init__(self,id):
                self.id=id
                self.item = {}
        
            def setItem(self,key):
                if key in self.item:
                    self.item[key]+=1
                else:
                    self.item[key]=1
            #...
  • 相关阅读:
    BZOJ 3625: [Codeforces Round #250]小朋友和二叉树
    HDU 2069 Coin Change
    HDU 1709 The Balance
    HDU 1398 Square Coins
    HDU 1171 Big Event in HDU
    HDU 1085 Holding Bin-Laden Captive!
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 1408: [Noi2002]Robot
    BZOJ 3163: [Heoi2013]Eden的新背包问题
    【Tsinsen-A1486】树(王康宁) 点分治 + Trie
  • 原文地址:https://www.cnblogs.com/remly/p/12735702.html
Copyright © 2020-2023  润新知