您的位置:首页 > 其它

给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串

2017-09-23 14:42 489 查看
给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大数等于占位符的个数。保证原串由大小写字母组成,同时长度小于等于500。

测试样例:

“A%sC%sE” ,7,['B','D','F'],3


返回

“ABCDEF”


#include<vector>
#include<assert.h>
#include<string>

//n是原串的长度,m是要替换的字符的数量
string Formatstring(const string& str, int n, const vector<char>& arg, int m)
{
//重新开辟一段空间并扩容,防止后面的增容开销
string formatstr;
formatstr.reserve(formatstr.size());
size_t pos = 0;//pos是指向vector中的元素

for (size_t i = 0; i < n; ++i)//i是指向str中的元素
{
if ((str[i] == '%') && (i + 1 < n) && (str[i + 1] == 's'))
{
assert(pos < m);
formatstr.push_back(arg[pos++]);
++i;
}
else
{
formatstr.push_back(str[i]);
}
}

while (pos < m)
{
formatstr.push_back(arg[pos++]);
}
return formatstr;
}

void Test()
{
string str = "A%sC%sE";
vector<char> arg;
arg.push_back('B');
arg.push_back('D');
arg.push_back('F');

string formastr = Formatstring(str, 7, arg, 3);
cout << formastr << endl;
}

int main()
{
Test();
system("pause");
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔试题
相关文章推荐