Day6: 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
题目344. 反转字符串 - 力扣(LeetCode)
void reverseString(vector<char>& s) {int len = s.size();int left = 0;int right = len - 1;while (left <= right){swap(s[left++], s[right--]);}return;}
题目541. 反转字符串 II - 力扣(LeetCode)
class Solution {
public:void reversek(string& s, int left, int right) {reverse(s.begin() + left, s.begin() + right);}string reverseStr(string s, int k) {//反转前k的函数int i = 0;int len = s.size();for (auto& e : s){i++;if (i == len ){if (i % (2 * k) >= k ){reversek(s, len - i % (2 * k), len - i % (2 * k) + k);}else if (i % (2 * k) == 0){reversek(s, 0, len - k);}else{reversek(s, len - i % (2 * k), len);}}else if (i %( 2 * k) == 0){reversek(s, i - 2*k, i - k );}}return s;}
};
题目54. 替换数字(第八期模拟笔试) (kamacoder.com)
#include<iostream>
using namespace std;int main()
{string s;cin>>s;//计算s中的数字数目int n=0;for(auto&e:s){if(e>='0'&&e<='9'){n++;}}//给s扩容int len=s.size();s.resize(s.size()+5*n);//双指针替换int pl=len-1;int pr=s.size()-1;while(pl<=pr&&pl>=0){if (s[pl] <= '9' &&s[ pl] >= '0'){s[pr--] = 'r';s[pr--] = 'e';s[pr--] = 'b';s[pr--] = 'm';s[pr--] = 'u';s[pr--] = 'n';pl--;}else{s[pr--] = s[pl--];}}cout<<s;return 0;
}
最后
注意resize reserve reverse
resize()
用于改变容器的大小,新添加的元素会被默认初始化,reverse()
用于反转容器中元素的顺序,而reserve()
用于预先分配容器的存储空间,提高插入大量元素的效率。