zoukankan      html  css  js  c++  java
  • Python3求解字符串滤值与百元买百鸡算法

    [本文出自天外归云的博客园]

    第一题:给你一个字符串,打印出来前后没有空格,单词之间只有一个空格的字符串。

    第二题:公鸡3元/只,母鸡4元/只,小鸡1元3只,给你money元一共多少种买法。

    普通版解法如下:

    def print_str(str, ret=[]):
        for i in range(len(str)):
            if i == 0:
                ret.append(str[i])
            else:
                if str[i - 1] == " " and str[i] == " ":
                    pass
                else:
                    ret.append(str[i])
        print("".join(ret).strip())
    
    
    def calc(money, count=0):
        for i in range(1, money // 3 + 1):
            for j in range(1, (money - i * 3) // 4 + 1):
                count += 1
                # print(f"公鸡{i}只 母鸡{j}只 小鸡{(money-i*3-j*4)*3}只")
        print(f"共有{count}种买法")
        return count
    
    
    if __name__ == '__main__':
        print_str("   I     love    Netease   ")
        calc(100)

    Pythonic版解法如下,一个算法一行:

    print_str = lambda str: print("".join([str[i] if i == 0 else str[i] for i in range(len(str)) if not (str[i - 1] == " " and str[i] == " ")]).strip())
    calc = lambda money, count=0: print(f"共有{len([(i,j,(money-i*3-j*4)*3) for i in range(1, money // 3 + 1) for j in range(1, (money - i * 3) // 4 + 1)])}种买法")
    
    if __name__ == '__main__':
        print_str("   I     love    Netease   ")
        calc(100)

    对于第一题,大师兄后来给我一个更简单的解法:

    print(" ".join("   I  love Netease   ".strip().split()))

    果然思路的优先级是更高的,一个好的思路有时候比好的实现优先级应该更高才对。

    再来一个不用内置函数解决的方法:

    str = "     I     love   Netease   "
    new_str = ""
    for i in range(len(str)):
        if len(new_str)==0:
            if str[i]==" ":
                pass
            else:
                new_str += str[i]
        else:
            if new_str[::-1][0] != " ":
                new_str += str[i]
            else:
                if str[i] != " ":
                    new_str += str[i]
    if new_str[::-1][0] == " ":
        new_str = new_str[:-1]
    print(new_str)
  • 相关阅读:
    架构设计流程:评估和选择备选方案
    架构设计流程:设计备选方案
    架构设计三原则
    迭代器模式(电视机遥控器)
    外观模式
    5.组合模式
    完成动物识别,自行拍摄动物图片进行上传并查看结果
    4.桥接模式 (毛笔和颜色)
    企业沟通机制
    完成植物识别,自行拍摄植物图片进行上传并查看结果
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/9267535.html
Copyright © 2011-2022 走看看