Problem: Implement an algorithm to determine if a string has all unique characters. What if you cannot use additional data structures?
def isUniqueChars(str): #first sort the string O(nlgn) sortedStr = "".join(sorted(str)) isUnique = True #compare the consecutive characters O(n) for i in range(len(sortedStr)-1): if sortedStr[i] == sortedStr[i+1]: isUnique = False return isUnique print isUniqueChars("Amber".lower()) print isUniqueChars("madam".lower()) def isUniqueChars2(str): #considering the characters are ascii characters building an array for 256 characters acting as a hash table arr = [0]*256 for c in str: asciiValue = ord(c) arr[asciiValue] += 1 isUnique = True #checking for repeated characters O(1) for entries in str: if arr[ord(entries)] > 1: isUnique = False return isUnique print isUniqueChars2("Amber".lower()) print isUniqueChars2("madam".lower())