C++ 要优化此字符串操作程序c++;
我刚刚解决了这个问题: 以下是我的解决方案:C++ 要优化此字符串操作程序c++;,c++,string,C++,String,我刚刚解决了这个问题: 以下是我的解决方案: int main(无效) { 字符串s,sub; int f,e,i; while(getline(cin,s)){ f=s.在(“[”)中首先找到; 而(f
int main(无效)
{
字符串s,sub;
int f,e,i;
while(getline(cin,s)){
f=s.在(“[”)中首先找到;
而(f 对于(i=0;i如果我正确地阅读了您的问题,您需要重新考虑您的设计。不需要搜索函数,也不需要删除和substr
等
首先,现在不要考虑[
或]
字符。从一个空白字符串开始,然后从原始字符串中添加字符。这是加快代码速度的第一件事。一个简单的循环是你应该开始的
现在,在循环过程中,当您实际遇到这些特殊字符时,只需将输出字符串中的“插入点”更改为字符串的开头(在[
的情况下)或字符串的结尾(在]
的情况下)
因此,诀窍不仅是在进行过程中构建一个新字符串,而且还要将插入点更改为新字符串。最初,插入点位于字符串的末尾,但如果遇到这些特殊字符,插入点将发生变化
如果您不知道,那么您不仅可以使用+=
或+
构建字符串,还可以使用std::string::insert
函数构建字符串
例如,您总是这样构建输出字符串:
out.insert(out.begin() + curInsertionPoint, original_text[i]);
curInsertionPoint++;
out
字符串是您正在构建的字符串,original_text
是您得到的输入。curInsertionPoint
将从0开始,如果遇到[
或]
字符,i
只是原始字符串的循环索引
除此之外,我不会发表更多的帖子,但你应该明白了。这个问题更适合你。你能对你自己的程序进行性能评估吗?我投票结束这个问题,因为它是关于代码审查的。
out.insert(out.begin() + curInsertionPoint, original_text[i]);
curInsertionPoint++;