第一题:
给你两个字符串 word1
和 word2
。请你从 word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
class Solution {
public:
string mergeAlternately(string word1, string word2) {
int m = world1.size(),n = world2.size();
int i = 0, j = 0;
string ans;
ans.reserve(m + n);
while (i < m || j < n) {
if (i < m) {
ans.push_back(word1[i]);
++i;
}
if (j < n) {
ans.push_back(word2[j]);
++j;
}
}
return ans;
}
}
ans.reserve(m + n); //代表分配m+n块内存给ans,主要是提高效率,reserve 函数用于预先分配足够的内存空间来存储 m + n 个字符
使用 reserve
的优点在于,它可以提高代码的效率。在不使用 reserve
的情况下,当字符串 ans
在拼接过程中增长时,可能需要多次重新分配内存以容纳更多的字符,这会导致额外的性能开销。通过预先分配足够的空间,reserve
函数减少了这种重复的内存分配,从而提高了代码的执行效率