O(n3n
Lặp lại string1
và string2
, cho mỗi ký tự kiểm tra tần suất có thể được tìm thấy trong string1
và string2
. Tôi là một nhân vật thường ở trong một chuỗi hơn trong một chuỗi khác, nó không phải là một hoán vị. Nếu tần số của tất cả các ký tự bằng nhau thì các chuỗi là hoán vị của nhau.
Đây là một miếng trăn để làm điều này chính xác
s1="abcaba"
s2="aadbba"
def check_if_permutations(string1, string2):
for string in [string1, string2]:
# string references string1
# string2, it is not a copy
for char in string:
count1=0
for char1 in string1:
if char==char1:
count1+=1
count2=0
for char2 in string2:
if char==char2:
count2+=1
if count1!=count2:
print('unbalanced character',char)
return()
print ("permutations")
return()
check_if_permutations(s1,s2)
string
string1
string2
char
char1
char2
O(logn)count1
count2
string
[string1, string2]
Tất nhiên bạn thậm chí không cần các biến đếm nhưng có thể sử dụng các con trỏ.
s1="abcaba"
s2="aadbba"
def check_if_permutations(string1, string2):
for string in [string1, string2]:
# string references one of string1
# or string2, it is not a copy
for char in string:
# p1 and p2 should be views as pointers
p1=0
p2=0
while (p1<len(string1)) and (p2<len(string2)):
# p1>=len(string1): p1 points to beyond end of string
while (p1<len(string1)) and (string1[p1]!=char) :
p1+=1
while(p2<len(string2)) and (string2[p2]!=char):
p2+=1
if (p1<len(string1)) != (p2<len(string2)):
print('unbalanced character',char)
return()
p1+=1
p2+=1
print ("permutations")
return()
check_if_permutations(s1,s2)
O(log(n))
n