如您所见,它超过了时间限制。
有人给了我一个想法,即拥有 10 个左右的空白空间静态变量并将它们连接起来形成更大的空间,所以我想尝试通过 2 的幂来实现。代码有效,但显然很慢。这样做的更快方法是什么?
std::string operator*(std::string const &s, size_t n)
{
std::string r;
r.reserve(n * s.size());
for (size_t i=0; i<n; i++)
r += s;
return r;
}
std::string operator^(std::string const &s, size_t n)
{
std::string r = s;
for (size_t i = 1; i < n; i++)
{
r = s * r.size();
}
if (n == 0) return std::string(" ");
return r;
}
int main()
{
string blank = " ";
string blank2 = blank * 2;
string blank4 = blank2 ^ 2;
string blank8 = blank2 ^ 3;
string blank16 = blank2 ^ 4;
for (int i = 0; i < 100; i++)
assert((blank2 ^ i).size() == pow(2, i));
return 0;
}