Created
March 5, 2019 01:00
-
-
Save DustinAlandzes/618af2192ce79dedd502b3b9d280f877 to your computer and use it in GitHub Desktop.
anagram detection problem for strings: http://interactivepython.org/runestone/static/pythonds/AlgorithmAnalysis/AnAnagramDetectionExample.html
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def checkingOff(s1 , s2): | |
alist = list(s2) | |
pos1 = 0 | |
stillOK = True | |
while pos1 < len(s1) and stillOK: | |
pos2 = 0 | |
found = False | |
while pos2 < len(alist) and not found: | |
if s1[pos1] == alist[pos2]: | |
found = True | |
else: | |
pos2 = pos2 + 1 | |
if found: | |
alist[pos2] = None | |
else: | |
stillOK = False | |
pos1 += 1 | |
return stillOK | |
print checkingOff('abcd', 'dcba') |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def countAndCompare(s1, s2): | |
c1 = [0]*26 | |
c2 = [0]*26 | |
for i in range(len(s1)): | |
pos = ord(s1[i]) - ord('a') | |
c1[pos] = c1[pos] + 1 | |
for i in range(len(2)): | |
pos = ord(s2[i]) - ord('a') | |
c2[pos] = c2[pos] + 1 | |
j = 0 | |
stillOK = True | |
while j < 26 and stillOK: | |
if c1[j] == c2[j]: | |
j = j + 1 | |
else: | |
stillOK = False | |
return stillOK | |
print(countAndCompare('apple', 'pleap')) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def sortAndCompare(s1, s2): | |
# convert string to list type | |
alist1 = list(s1) | |
alist2 = list(s2) | |
# sort lists | |
alist1.sort() | |
alist2.sort() | |
position = 0 | |
matches = True | |
# go through every character and see if they match | |
while pos < len(s1) and matches: | |
if alist1[position] == alist2[position]: | |
pos = pos + 1 | |
else: | |
matches = False | |
return matches | |
print(sortAndCompare('abcde', 'edcba')) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment