計數比較方式實現變位詞判斷
'''
需求: 比較兩個字串是否為變位詞
計數比較方式解題思路:
對比兩個詞中每個字母出現的次數
如果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整型字串來記錄每個元素...