Skip to content

Instantly share code, notes, and snippets.

@abhinavjonnada82
Last active October 4, 2019 05:05
Show Gist options
  • Save abhinavjonnada82/df745c7090ae6f51c782e1616a7b6d04 to your computer and use it in GitHub Desktop.
Save abhinavjonnada82/df745c7090ae6f51c782e1616a7b6d04 to your computer and use it in GitHub Desktop.
# isPalindrome
# Runtime: O(N)
# Space: O(N)
def isPalindrome(strings):
mid = len(strings)//2
if len(strings) <= 1:
return False
if len(strings) % 2 == 0:
leftPtr = mid - 1
rightPtr = mid
else:
leftPtr = mid
rightPtr = mid
while leftPtr > 0 or rightPtr < len(strings):
if strings[leftPtr] == strings[rightPtr]:
leftPtr -= 1
rightPtr += 1
else:
return False
return True
strings = "hilklkhlgyik"
print(isPalindrome(strings))
# caesarCipherEncryptor
# Runtime: O(N)
# Space: O(N)
def caesarCipherEncryptor(string, key):
# key = key % 26
newLetters = []
for letter in string:
newLetters.append(getNewLetter(letter, key))
return "".join(newLetters)
def getNewLetter(letter, key):
newLetterCode = ord(letter) + key
if newLetterCode <= 122:
return chr(newLetterCode)
else: # to rotate after z makes 122 & above to 1 & adds to 96 to start from 'a'
return chr(96+ newLetterCode % 122)
print(caesarCipherEncryptor("xyz", 2))
def longestPalindromicSubstring(string):
lis = []
for i in range(0, len(string)):
for j in range(i+1, len(string)):
lis.append(string[i:j])
for i in lis:
if len(i) >= 2:
return isPalindrome(i)
def isPalindrome(strings):
maxString = ""
flag = True
mid = len(strings)//2
if len(strings) % 2 == 0:
leftPtr = mid - 1
rightPtr = mid
else:
leftPtr = mid
rightPtr = mid
while leftPtr > 0 or rightPtr < len(strings):
if strings[leftPtr] == strings[rightPtr]:
leftPtr -= 1
rightPtr += 1
else:
flag = False
if flag == True and len(strings) > len(maxString):
maxString = strings
return maxString
print(longestPalindromicSubstring("abaxyzzyxf"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment