行业知识
重拾C++之菜鸟刷算法第5篇---字符串
2026-11-04 05:16:43
来源:互联网转载
今天分享���字符串题目都比较简单,明天单独写一篇关于KMP+字符串,这个对于本菜鸟来说还是难度太高了 ┭┮﹏┭┮,如果有大佬能分享一下见解那就太棒了。下面进入正题 ~
()一、反转字符串
题目
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
()不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
344. 反转字符串 - 力扣(LeetCode)
题解
class Solution {public: void reverseString(vector& s) { int length = s.size() - 1; for(int i = 0; i 二、反转字符串 II
题目
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
-
如果剩余字符少于 k 个,则将剩余字符全部反转。
-
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
541. 反转字符串 II - 力扣(LeetCode)
题解
class Solution {public: void reverse(string &str, int start, int end){ for(int i = start, j = end; i '0'){ count++; } } int oldSize = s.size(); s.resize(s.size() + count * 5); int newSize = s.size(); for(int i = newSize - 1, j = oldSize - 1; j >= 0; j--, i--){ if(s[j] '9'){ 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