腾讯精选50题—Day17题目 344,557
第十七天,今天是组队打卡的最后一天,新的起点,起航~ 芜湖~
1. 题目344 反转字符串
(1) 题目描述

(2) 思路
折半替换即可。
(3) 题解
class Solution {
public:
void reverseString(vector<char>& s) {
for (int i = 0; i < s.size() / 2; i++)
{
swap(s[i], s[s.size() - 1 - i]);
}
}
};
结果:

时间复杂度:
O
(
n
)
O(n)
O(n)
空间复杂度:
O
(
1
)
O(1)
O(1)
2. 题目557 反转字符串中的单词 III
(1) 题目描述

(2) 思路
原地删除,需要注意不能越界。
(3) 题解
class Solution {
public:
string reverseWords(string s) {
int i = 0;
while (i < s.size())
{
int start = i;
while (i<s.size() && s[i] != ' ')
i++;
int left = start, right = i - 1;
while (left < right)
{
swap(s[left], s[right]);
left++;
right--;
}
while (i < s.size() && s[i] == ' ')
i++;
}
return s;
}
};
结果:

时间复杂度:
O
(
n
)
O(n)
O(n)
空间复杂度:
O
(
1
)
O(1)
O(1)
本文介绍了两道关于字符串反转的腾讯精选编程题目,包括如何原地反转整个字符串以及反转字符串中的每个单词。解决方案分别使用了折半替换和双指针技术,实现了时间复杂度为O(n)的空间和时间效率。
385

被折叠的 条评论
为什么被折叠?



