O(n3n
Döngü aracılığıyla string1
ve string2
her karakter kontrolü için ne sıklıkta bulunabilir string1
ve string2
. Ben bir karakter bir dizede diğerinden daha sık, ben bir permütasyon değil. Tüm karakterlerin frekansları eşitse, dizeler birbirinin permütasyonudur.
İşte bunu kesinleştirmek için bir parça piton
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]
Tabii ki sayım değişkenlerine bile ihtiyacınız yok ama işaretçiler kullanabilirsiniz.
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