天池在线编程 折纸(通过)

题目来源于九章算法旗下专业刷题平台


描述

折纸,每次都是将纸从右向左对折,凹痕为 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;
    }
};

测试结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/109152458