ओ ( एन)3n
लूप के माध्यम से string1और string2, हर चरित्र की जांच के लिए कितनी बार उस में पाया जा सकता है string1और string2। मेरा किरदार एक स्ट्रिंग में अक्सर दूसरे की तुलना में अधिक है, यह एक क्रमपरिवर्तन नहीं है। यदि सभी वर्णों की आवृत्तियाँ समान हैं, तो तार एक दूसरे के क्रमपरिवर्तन हैं।
इस सटीक बनाने के लिए यहां अजगर का एक टुकड़ा है
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)
stringstring1string2charchar1char2ओ ( लॉग)n )count1count2string[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)
ओ ( लॉग)( n ) )
n