贵州住房建设厅网站,wordpress 多个站点,深圳vi设计公司推荐,网站seo推广seo教程title: 代码随想录Day8 date: 2024-01-03 17:41:58
代码随想录笔记 categories:技术 代码随想录Day8|[344.]
翻转字符串|541 翻转字符串2|
思路
从前往后和从后往前两个指针不断运行交换即可
代码
class Solution {
public:void reverseString(vectorchar s…
title: 代码随想录Day8 date: 2024-01-03 17:41:58
代码随想录笔记 categories:技术 代码随想录Day8|[344.]
翻转字符串|541 翻转字符串2|
思路
从前往后和从后往前两个指针不断运行交换即可
代码
class Solution {
public:void reverseString(vectorchar s) {int n s.size();for (int left 0, right n - 1; left right; left, --right) {swap(s[left], s[right]);}}
};翻转字符串2
思路
每隔 2k 个字符的前 k 个字符进行反转剩余字符小于 2k 但大于或等于 k 个则反转前 k 个字符剩余字符少于 k 个则将剩余字符全部反转。
代码实现
class Solution {
public:string reverseStr(string s, int k) {for (int i 0; i s.size(); i 2 * k) {if (i k s.size()) { // 满足有 k 个就翻转 k 个for (int j 0; j k / 2; j) {swap(s[i j], s[i k - 1 - j]); // 修正反转逻辑}} else {// 反转剩余的所有字符for (int j 0; j (s.size() - i) / 2; j) {swap(s[i j], s[s.size() - 1 - j]); // 修正反转逻辑}}}return s;}
};
替换数字
思路
双指针法发现后进行容量扩充
代码
#includeiostream
using namespace std;
int main() {string s;while (cin s) {int count 0; // 统计数字的个数int sOldSize s.size();for (int i 0; i s.size(); i) {if (s[i] 0 s[i] 9) {count;}}// 扩充字符串s的大小也就是每个空格替换成number之后的大小s.resize(s.size() count * 5);int sNewSize s.size();// 从后先前将空格替换为numberfor (int i sNewSize - 1, j sOldSize - 1; j i; i--, j--) {if (s[j] 9 || s[j] 0) {s[i] s[j];} else {s[i] r;s[i - 1] e;s[i - 2] b;s[i - 3] m;s[i - 4] u;s[i - 5] n;i - 5;}}cout s endl;}总结
字符串操作相对比较简单自己能完整把代码搞定思路也和书里相差不大2H