
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Check for Lexicographically Bigger Permutation Between Two Strings in Python
Suppose we have two strings s and t of the same size, we have to check whether there is some permutation of s, say s1, and permutation of t, say t1, such that: s1[i] ≤ t1[i] for all 0 ≤ i < n or t1[i] ≤ s1[i] for all 0 ≤ i < n.
So, if the input is like s = "vyx" t = "wzx", then the output will be True, as we can have s1 = "vxy" and t1 = "wxz".
To solve this, we will follow these steps −
- if s and t are empty, then
- return True
- s := sort the string s
- t := sort the string t
- Define a function util() . This will take s1, s2
- for i in range 0 to size of s1, do
- if s1[i] > t1[i], then
- return False
- if s1[i] > t1[i], then
- return True
- From the main method do the following −
- if util(s, t) is true, then
- return True
- swap s and t
- return util(s, t)
Let us see the following implementation to get better understanding −
Example
class Solution: def solve(self, s, t): if not len(s) or not len(t): return True s = sorted(s) t = sorted(t) def util(s1, t1): for i in range(len(s1)): if s1[i] > t1[i]: return False return True if util(s, t): return True s, t = t, s return util(s, t) ob = Solution() s = "vyx" t = "wzx" print(ob.solve(s, t))
Input
"vyx", "wzx"
Output
True
Advertisements