Skip to content

Commit 6a7a1f0

Browse files
committed
Time: 975 ms (6.13%), Space: 5.9 MB (96.85%) - LeetHub
1 parent 4d3ae8f commit 6a7a1f0

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Solution {
2+
public:
3+
string next(string s) {
4+
if(s.length()==1) return s;
5+
int in=-1, num=0;
6+
for(int i=s.length()-1;i>0;i--) {
7+
if(s[i]-'0'>s[i-1]-'0'){
8+
in=i-1;
9+
num=s[i-1]-'0';
10+
break;
11+
}
12+
}
13+
14+
if(in==-1) return s;
15+
int in1=-1;
16+
for(int i=in+1;i<s.length()-1;i++) {
17+
if(s[i]-'0'>s[in]-'0' && s[in]-'0'>s[i+1]-'0') {
18+
in1=i;
19+
}
20+
}
21+
if(in1==-1) in1=s.length()-1;
22+
// cout<<in1<<endl;
23+
char temp=s[in];
24+
s[in]=s[in1];
25+
s[in1]=temp;
26+
string sub=s.substr(in+1, s.length()-in);
27+
reverse(sub.begin(), sub.end());
28+
string ans = s.substr(0, in+1) + sub;
29+
// cout<<ans<<endl;
30+
return ans;
31+
}
32+
33+
string getPermutation(int n, int k) {
34+
string ans="";
35+
for(int i=1;i<=n;i++) {
36+
ans+=to_string(i);;
37+
}
38+
for(int i=0;i<k-1;i++) {
39+
ans=next(ans);
40+
}
41+
return ans;
42+
}
43+
};

0 commit comments

Comments
 (0)