c++ - 逐元素初始化字符串会导致 TLE,但这种技术效果很好
问题描述
我只是在解决字符串问题。我不得不用'a'初始化整个字符串。字符串 n 的大小可以大到 10^5 。我使用蛮力方法通过循环初始化每个元素。
string s;
for(int i = 0;i < n;i++)s[i]='a';
当我去使用打印字符串时
cout<<s;
什么都没有打印!要打印字符串,我必须按元素打印:-
for(int i=0;i<n;i++)cout<<s[i];
此外,这种方法给了 TLE。
但是,当我像这样初始化字符串时
string s(n,'a');
该解决方案被接受。而且我能够完全打印整个字符串。
为什么如此巨大的差异只是由不同的初始化技术引起的?
解决方案
string s;
声明一个大小为 0 的字符串。索引到此字符串[]
中将调用未定义的行为。一个结果可能是 TLE。
您可以使用 size 初始化字符串n
,并将所有元素初始化为相同的字符:
string s(n,'a');
如果你想使用循环,你可以这样做:
string s;
for(int i = 0;i < n;i++) s += 'a';
推荐阅读
- caching - 如何通过java查询点燃缓存?
- oauth-2.0 - 通用身份验证在授权 jupyterHub 上使用 HTTP/500 响应
- excel - Excel:使用 UDF 时出现单个 #VALUE 错误
- java - Kotlin 中的 getDeclaredMethod?
- python - 如何将模型字段打印为 json 输出?
- nestjs - nestjs 在运行时替换插件系统的服务
- swift - swift中的WooCommerce集成
- azure - 无法在 Azure 中发布聊天机器人。单击“直线通道”按钮后,出现错误
- android - 即使应用程序关闭,如何在不点击通知的情况下启动活动?
- vue.js - 如果我只用数字迭代,我如何获得 v-for 组件的 v-model 值?