344.反转字符串,利用双指针交换字符串左右位置的字符,没什么好说的
#include <iostream>
#include <vector>
void reverseString(std::vector<char> &s)
{
int left = 0;
int right = s.size() - 1;
while (left < right)
{
// 交换左右指针所指向的元素
char temp = s[left];
s[left] = s[right];
s[right] = temp;
// 向中心移动指针
left++;
right--;
}
}
int main()
{
std::vector<char> s = {'h', 'e', 'l', 'l', 'o'};
reverseString(s);
for (char c : s)
{
std::cout << c;
}
std::cout << std::endl;
return 0;
}
541. 反转字符串II,固定段数反转字符串,可以在写循环边界的时候注意一下,反转实现用reverse,代码如下:
#include <iostream>
#include <algorithm> // 包含 std::reverse
#include <string>
void reverseStr(std::string &s, int k)
{
int n = s.length();
for (int start = 0; start < n; start += 2 * k)
{
// 反转从 start 开始的前 k 个字符
// 如果剩余字符少于 k 个,反转所有剩余字符
if (start + k <= n)
{
std::reverse(s.begin() + start, s.begin() + start + k);
}
else
{
std::reverse(s.begin() + start, s.end());
}
}
}
int main()
{
std::string s = "abcdefg";
int k = 2;
reverseStr(s, k);
std::cout << s << std::endl; // 输出结果应为 "bacdfeg"
return 0;
}
卡码网:54.替换数字,直接实现功能,懒得优化
#include <iostream>
#include <string>
#include <cctype> // 包含函数 isdigit
std::string replaceDigitsWithWord(const std::string &s)
{
std::string result;
for (char c : s)
{
if (isdigit(c))
{
result += "number";
}
else
{
result += c;
}
}
return result;
}
int main()
{
std::string s = "a1b2c3";
std::string transformed = replaceDigitsWithWord(s);
std::cout << transformed << std::endl; // 输出 "anumberbnumbercnumber"
return 0;
}