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)
Python3求解字符串滤值与百元买百鸡算法的更多相关文章
- Java实现 基础算法 百元买百鸡
public class 百元买百鸡 { public static void main(String[] args) { //母鸡 for (int i = 1; i < 33; i++) { ...
- 百钱买百鸡问题 php版本
/* * 百钱买百鸡问题 * * 我国古代数学家张丘建在<算经>一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母 ...
- 华为OJ平台——百钱买百鸡问题
题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...
- python_百文买百鸡问题
百文买百鸡问题 -- 不定方程 -- 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,如何买? -- 列出方程式 x + y + z = 100 5x + 3y + z/3 ...
- 百钱买百鸡问题Java
//百钱买百鸡public class baiqianbaiji { static void BQBJ(int m,int n)//m为钱的总数,n为鸡数 { int z; for(int x = 0 ...
- 用JS来计算百钱买百鸡
怎样用一百块买一百只鸡?已知公鸡5块一只,母鸡3块一只,小鸡一块钱3只: 需要用到for循环嵌套,并且通过优化代码,可以加快运行效率. <!DOCTYPE html> <html l ...
- Java_百钱买百鸡
题目:公鸡3文钱,母鸡2文钱,3只小鸡1文钱,百钱买百鸡,求多少公鸡,母鸡,小鸡? public class Work6{ public static void main(String[] args) ...
- python解决百钱买百鸡
百钱买百鸡 关注公众号"轻松学编程"了解更多. 现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只 要求:公鸡.母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是10 ...
- C# 百钱买百鸡
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
随机推荐
- 计蒜客 淘宝的推荐系统【DP】
题目链接:https://nanti.jisuanke.com/t/26984 ...
- [CodeForces-1036E] Covered Points 暴力 GCD 求交点
题意: 在二维平面上给出n条不共线的线段,问这些线段总共覆盖到了多少个整数点 解法: 用GCD可求得一条线段覆盖了多少整数点,然后暴力枚举线段,求交点,对于相应的 整数交点,结果-1即可 #inclu ...
- jvm本地实战
前言 由于上次线上full gc,让我这个没有机会实战接触jvm的人,尝到了一定的甜头,同时也觉得自己还有很多东西需要去实战并总结.这是一篇记录jvm配置参数,使用jvisualvm工具来让人对j ...
- 11,EasyNetQ-调度事件与定时发布
许多业务流程都要求将事件安排在未来的某个日期. 例如,在与客户进行初次销售联系之后,我们可能希望在将来某个时间安排后续电话. EasyNetQ可以通过其未来发布功能帮助您实现此功能. 例如,我们在这里 ...
- dns 安全可视化
dns 安全 可视化 === 明确目标: 1,什么是dns安全可视化. 什么是dns 2,怎么做到dns安全可视化. 3,什么是BI 4,dns安全 是什么, 有哪些数据需要展示. 明确方法: 1,先 ...
- 数值分析之Neville's Algorithm
Neville插值方法详解 牛顿的插值方法涉及两个步骤:计算系数,随后评估多项式. 如果插值运作良好使用相同的多项式在x的不同值处重复执行. 要是一点是内插,一种单步计算插值的方法,如Nevi ...
- ps怎么撤销的三种方法和ps撤销快捷键以及连续撤销多步快捷键
内容提要:文章综合介绍ps撤销快捷键相关的一些操作,包括PS怎么撤销.PS撤销多步.ps连续撤销快捷键.历史记录面板操作等等. 关于ps怎么撤销操作,有多种方法:使用PS撤销快捷键.编辑菜单.文件菜单 ...
- [Astar2008]Black-Whilte-Tree
Description: 你拥有一棵有 N 个结点白色的树--所有节点都是白色的. 接下来,你需要处理 C 条指令: 1.修改指令:改变一个给定结点的颜色(白变黑,黑变白); 2.查询指令:询问从结点 ...
- (转)理解classloader
ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassLoader的加载机制,也有利于我们编写出更高效的代码.ClassLo ...
- Codeforces Round #532 (Div. 2)
Codeforces Round #532 (Div. 2) A - Roman and Browser #include<bits/stdc++.h> #include<iostr ...