O(n3n
Döngü aracılığıyla string1ve string2her karakter kontrolü için ne sıklıkta bulunabilir string1ve 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)
stringstring1string2charchar1char2O(logn)count1count2string[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