python演算法之計數比較

2021-10-09 12:52:15 字數 1105 閱讀 8548

計數比較方式實現變位詞判斷

'''

需求: 比較兩個字串是否為變位詞

計數比較方式解題思路:

對比兩個詞中每個字母出現的次數

如果26個字母出現的次數都相同

則兩個字串一定是變位詞

'''def

count_comparison

(s1, s2)

: c1 =[0

]*26 c2 =[0

]*26for i in

range

(len

(s1)):

# i = 0

pos =

ord(s1[i])-

ord(

'a')

# s1[i] = c

# print(pos) # 2 表示該字母與a的位置差

# print(c1[pos]) # 計數初始為0

c1[pos]

= c1[pos]+1

# 字母對應在列表位置,對應的值 + 1

# print(c1[pos]) # 1 表示該字母匹配到的次數

for i in

range

(len

(s2)):

pos =

ord(s2[i])-

ord(

'a')

c2[pos]

= c2[pos]+1

# 遍歷兩個列表,相同下標下的次數是否相當

j =0 check =

true

while j <

26and check:

if c1[j]

== c2[j]

: j = j +

1else

: check =

false

return check

print

(count_comparison(

"china"

,'inach'))

# true

演算法之計數排序

核心思想 通過計算某個資料之前有多少個資料來確定自身的位置,不通過資料之間的相互比較,所以是非比較排序。原始計數排序 時間複雜度 o n k k為資料量 缺點 如果資料只有兩個,9999,10000,那麼會額外建立容量為10000的陣列,浪費空間。public static int countsor...

演算法之計數排序

原理 用乙個陣列記錄待排序陣列 現的數字。最低位代表最小值,偏移量是記錄陣列中的下標 待排序陣列 2 1 4 可以表示為 記錄陣列 1 1 0 1 陣列長度為 4 1 1 然後根據記錄陣列輸出結果 public static void countsort int arr if arr.length ...

排序演算法之計數排序

今在學習中,遇到計數排序演算法,雖然其對待排序的序列要求嚴格,但對於符合條件的序列來說,其時間複雜度很小。故列於此,僅為學習記憶。參考資料 對於僅由大寫字母 或小寫字母 構成的無序序列,可採用下面演算法進行排序。該演算法不在序列的每個元素間進行比較,而是使用了乙個額外的help整型字串來記錄每個元素...