Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Mockvita Question 1 [String Rotation]
- # Author : Aman Vishwakarma [L1]
- # Utility function to check anagrams
- def isAnagram(s1, s2):
- c1 = [0] * 26
- c2 = [0] * 26
- # increase character count
- for i in s1:
- c1[ord(i) - 97] += 1
- for i in s2:
- c2[ord(i) - 97] += 1
- # if the character counts are same, they are anagrams
- if c1 == c2:
- return True
- return False
- # Utility Function for subAnagrams
- def isSubAnagram(originalString, generatedString):
- l = len(originalString)
- start,end = 0,l # For substring []
- while end < len(generatedString):
- subString = originalString[start:end]
- if isAnagram(subString,generatedString):
- return True
- elif subString[-1] not in originalString:
- start+=1
- end+=1
- else:
- start+=1
- end+=1
- return False
- # Left rotate function
- def leftRotation(querry, magnitude):
- return querry[magnitude:]+querry[0:magnitude]
- # Right rotate function
- def rightRotation(querry,magnitude):
- return leftRotation(querry,len(querry)-magnitude)
- # Function to get first char
- getFirstChar = lambda x : list(x)[0]
- # Driver Function
- def driver(s1,s2,actions):
- forRotation = s1
- # make generated string
- genString = ""
- for action in actions:
- dir,mag = action
- if dir == "L":
- forRotation = leftRotation(forRotation,mag)
- genString+=getFirstChar(forRotation)
- elif dir == "R":
- forRotation = rightRotation(forRotation,mag)
- genString+=getFirstChar(forRotation)
- else:
- continue
- # Show Something useful:
- if isSubAnagram(s2,genString):
- print("True")
- else:
- print("False")
- if __name__ == '__main__':
- # Main String Defination
- s1 = "firstcharstring"
- # Taking inputs
- actions = []
- originalString = str(input())
- for x in range(int(input())):
- dir,mag = input().split()
- actions.append(tuple([dir.upper(),int(mag)]))
- # Pass everything to driver function
- driver(s1,originalString,actions)
Add Comment
Please, Sign In to add comment