题目:
842. Origami
Origami, each time the paper is folded from right to left, the dent is 0, the bump is 1. After the n number of folds, find the 01 sequence of the creases formed with the paper unrolling.
Example
Given n = 1, return “0”.
Explanation:
the 01 sequence of the creases is “0”.
Given n = 2, return “001”.
Explanation:
the 01 sequence of the creases is “001”.
Notice
1 <= n <= 20
我们可看出一些规律:
#1: 0
#2: 001
#3: 0010011
#4: 001001100011011
设第i次结果为s, 那么第i+1次结果为s + ‘0’ + s.reverse().flip()。
例如: 001001100011011 = 0010011 + ‘0’ + 0011011
其中0011011即0010011的0/1互换 并倒转。
class Solution {
public:
/**
* @param n: The folding times
* @return: the 01 string
*/
string getString(int n) {
string s = "0";
for (int i = 2; i <= n; ++i) {
string reverseS;
int len = s.size();
s.push_back('0');
for (int j = 0; j < len; ++j) {
s.push_back(1 ^ (s[len - 1 - j] - '0') + '0');
}
}
return s;
}
};