[本文出自天外歸雲的]
第一題:給你乙個字串,列印出來前後沒有空格,單詞之間只有乙個空格的字串。
第二題:公雞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...