O(n3n
ห่วงผ่านstring1
และstring2
สำหรับการตรวจสอบทุกตัวอักษรว่ามักจะสามารถพบได้ในและstring1
string2
ฉันตัวละครมักจะอยู่ในสายหนึ่งมากกว่าอีกสายหนึ่งมันไม่ใช่การเปลี่ยนแปลง หากความถี่ของตัวละครทั้งหมดเท่ากันสตริงนั้นจะเรียงสับเปลี่ยนกัน
นี่คือส่วนหนึ่งของ python ที่จะทำให้แม่นยำ
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]
แน่นอนคุณไม่จำเป็นต้องใช้ตัวแปรนับ แต่สามารถใช้พอยน์เตอร์ได้
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