Circular Permutation in Binary Representation LeetCode solution in C++

1
class Solution {
2
public:
3
vector<string> get_val(int n) {
4
if (n == 1) return {"0", "1"};
5
vector<string> v = get_val(n - 1);
6
vector<string> ans;
7
for (int i = 0; i < v.size(); i++) {
8
ans.push_back("0" + v[i]);
9
}
10

11
for (int i = v.size() - 1; i >= 0; i--) {
12
ans.push_back("1" + v[i]);
13
}
14
return ans;
15
}
16

17
vector<int> solve(int n) {
18
vector<string> v = get_val(n);
19
vector<int> ans;
20
for (int i = 0; i < v.size(); i++) {
21
string s = v[i];
22
int x = 0;
23
for (int j = 0; j < s.size(); j++) {
24
x = x * 2 + s[j] - '0';
25
}
26
ans.push_back(x);
27
}
28
return ans;
29
}
30

31
vector<int> circularPermutation(int n, int start) {
32
vector<int> v = solve(n);
33
int ind;
34
for (int i = 0; i < v.size(); i++) {
35
if (v[i] == start) {
36
ind = i;
37
break;
38
}
39
}
40

41
vector<int> ans;
42
for (int i = ind; i < v.size(); i++) {
43
ans.push_back(v[i]);
44
}
45
for (int i = 0; i < ind; i++) {
46
ans.push_back(v[i]);
47
}
48
return ans;
49
}
50
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0