Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- You are given a string s that consists of only digits.
- Check if we can split s into two or more non-empty substrings such that the numerical values of the substrings are in descending order and the difference between numerical values of every two adjacent substrings is equal to 1.
- For example, the string s = "0090089" can be split into ["0090", "089"] with numerical values [90,89]. The values are in descending order and adjacent values differ by 1, so this way is valid.
- Another example, the string s = "001" can be split into ["0", "01"], ["00", "1"], or ["0", "0", "1"]. However all the ways are invalid because they have numerical values [0,1], [0,1], and [0,0,1] respectively, all of which are not in descending order.
- Return true if it is possible to split s as described above, or false otherwise.
- A substring is a contiguous sequence of characters in a string.
- '''
- class Solution:
- def splitString(self, s: str) -> bool:
- n=len(s)
- def dfs(i,prev):
- if i==n:
- return True
- for j in range(i,n):#Here we need not go for min 2 partitions just min 1 parition also enough
- val=int(s[i:j+1])
- if val+1==prev and dfs(j+1,val):
- return True
- return False
- for i in range(n-1):# At least we need 2 paritions at level 1 so. We do the partition to n-2
- val=int(s[:i+1])
- if dfs(i+1,val):return True
- return False
Add Comment
Please, Sign In to add comment