葛底斯堡演說 只出現一次單詞

2021-09-28 21:33:22 字數 1168 閱讀 1454

關於python入門經典的葛底斯堡演說

def

analysefile

(file)

: words =

for line in file:

lineword = line.split(

)for word in lineword:

word.lower(

) word.strip(

',.'

)if word !=

'--'

:return words

defmakeunique

(speech)

: unique =

notunique =

for word in speech:

if word not

in unique:

elif word in unique and word not

in notunique:

elif word in unique and word in notunique:

continue

return

len(unique)

-len

(notunique)

gfile =

open

("gettysburg"

,'r'

)speechwords = analysefile(gfile)

print

("speech length:"

,len

(speechwords)

)uniquewords = makeunique(speechwords)

print

("unique length:"

, uniquewords)

我覺得書中的**並不能實現提出的目標:

追蹤檔案只出現一次的不同單詞

我將第二個函式進行了修改,如果乙個單詞第一次出現進去unique,第二次出現進去notunique,之後再出現不進行處理。這樣子兩個列表元素之差就代表只出現一次的不同單詞數量

程式設計的小tip

在python中的並且不是 && ||,而是英文單詞and和or

只出現一次的數字

1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...

只出現一次的數

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。找出只出現一次的那兩個元素。示例 給定 nums 1,2,1,3,2,5 返回 3,5 注意 結果的順序並不重要,對於上面的例子 5,3 也是正確答案。你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它...

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...