File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Time: O(n)
2
+ # Space: O(1)
3
+
4
+ class Solution (object ):
5
+ def nextPalindrome (self , num ):
6
+ """
7
+ :type num: str
8
+ :rtype: str
9
+ """
10
+ def next_permutation (nums , begin , end ):
11
+ def reverse (nums , begin , end ):
12
+ left , right = begin , end - 1
13
+ while left < right :
14
+ nums [left ], nums [right ] = nums [right ], nums [left ]
15
+ left += 1
16
+ right -= 1
17
+
18
+ k , l = begin - 1 , begin
19
+ for i in reversed (xrange (begin , end - 1 )):
20
+ if nums [i ] < nums [i + 1 ]:
21
+ k = i
22
+ break
23
+ else :
24
+ reverse (nums , begin , end )
25
+ return False
26
+ for i in reversed (xrange (k + 1 , end )):
27
+ if nums [i ] > nums [k ]:
28
+ l = i
29
+ break
30
+ nums [k ], nums [l ] = nums [l ], nums [k ]
31
+ reverse (nums , k + 1 , end )
32
+ return True
33
+
34
+ nums = list (num )
35
+ if not next_permutation (nums , 0 , len (nums )// 2 ):
36
+ return ""
37
+ for i in xrange (len (nums )// 2 ):
38
+ nums [- 1 - i ] = nums [i ]
39
+ return "" .join (nums )
You can’t perform that action at this time.
0 commit comments