Python3求解字串濾值與百元買百雞演算法

2021-09-07 19:01:37 字數 1819 閱讀 2210

[本文出自天外歸雲的]

第一題:給你乙個字串,列印出來前後沒有空格,單詞之間只有乙個空格的字串。

第二題:公雞3元/只,母雞4元/只,小雞1元3只,給你money元一共多少種買法。

普通版解法如下:

def print_str(str, ret=):

for i in

range(len(str)):

if i ==0:

else

:

if str[i - 1] == "

"and str[i] == "":

pass

else

:

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"公雞只 母雞只 小雞只")

print(f"

共有種買法")

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"

共有種買法")

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求解字串濾值與百元買百雞演算法

本文出自天外歸雲的 第一題 給你乙個字串,列印出來前後沒有空格,單詞之間只有乙個空格的字串。第二題 公雞3元 只,母雞4元 只,小雞1元3只,給你money元一共多少種買法。普通版解法如下 def print str str,ret for i in range len str if i 0 els...

蠻力法求解字串匹配

對於字串s和t,若t是s子串,返回t在s中的位置 t的首字元在s中對應的下標 否則返回 1。採用直接窮舉法求解,稱為bf演算法。該演算法從s的每乙個字元開始查詢,看t是否會出現。int bf string s,string t else if j t.length return i j else r...

求解字串中最長對稱字串長度

問題 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出4。分析 暴力法,窮舉所有的子字串,然後判斷字串是否是對稱字串,如果是,則計算出長度和當前最長的字串比較,如果長度更長,更新結果。這種解法的時間複雜度為o n 2 o...