The set [1,2,3,…,n]
contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123"
"132"
"213"
"231"
"312"
"321"
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
解法一:字典序
public class Solution {
public void reverse(char num[], int s, int e){
for(int i=s; i<e; i++, e--){
char t = num[i];
num[i] = num[e];
num[e] = t;
}
}
public String getPermutation(int n, int k) {
if(n==0 || k==0) return "";
char num[] = new char[n];
for(int i=0; i<n; i++) num[i] = (char)(i + 1 + '0');
int count=1;
while(count < k){
int pos = n-1;
while(pos>0 && num[pos] <= num[pos-1]) pos--;
if(pos == 0) break;
int j = n-1;
while(num[j] <= num[pos-1]) j--;
char t = num[j];
num[j] = num[pos-1];
num[pos-1] = t;
reverse(num, pos, n-1);
count++;
}
return new String(num);
}
}