O(n3n
Loop through string1
dan string2
, untuk setiap karakter, periksa seberapa sering dapat ditemukan di string1
dan string2
. Saya seorang karakter lebih sering dalam satu string daripada yang lain, itu bukan permutasi. Jika frekuensi semua karakter sama maka string adalah permutasi satu sama lain.
Berikut adalah sepotong python untuk membuat ini tepat
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]
.
Tentu saja Anda bahkan tidak perlu variabel jumlah tetapi dapat menggunakan pointer.
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)) variabel untuk memegang nilai-nilai hitung.
n