题目来源于九章算法旗下专业刷题平台
描述
折纸,每次都是将纸从右向左对折,凹痕为 0,凸痕为 1,求折 n 次后,将纸展开所得折痕组成的 01 序列。
示例
样例 1:
输入: 1
输出: “0”
样例 2:
输入: 2
输出: “001”
思路分析
n = 1时
string = 0;
n = 2时,
string = 001
n = 3时,
string = 0010011
可以发现规律:
每次插入数字时,在上一轮数字串上每遍历一个数字插入一个数字,按照01循环即可。
代码实现
class Solution {
public:
/**
* @param n: The folding times
* @return: the 01 string
*/
string getString(int n) {
if (n == 1)
return "0";
string temp = getString(n - 1), ans = "";
int num = pow(2, n - 1);
for (int i = 0; i < temp.size(); ++i) {
ans += (to_string(i % 2) + temp[i]);
}
ans += to_string(1);
return ans;
}
};