[每日一题] 4. 倒置字符串(字符串、OJ技巧)
发布日期:2021-05-12 23:13:43 浏览次数:20 分类:精选文章

本文共 900 字,大约阅读时间需要 3 分钟。

列文优化版本

问题分析

本问题要求将一段话中的单词进行倒置,标点符号保持不变。例如,将"I like beijing."倒置后变为"beijing. like I"。输入是一个单词组成的句子,长度不超过100个字符。

解题思路

该问题可以通过两种方法来解决:

**第一种方法**:将整个字符串倒置,然后逐个单词倒置。这种方法利用了STL中的`reverse`函数,代码实现相对简洁且高效。 **第二种方法**:直接读取输入,将单词逐个倒置后拼接起来。这种方法通过逐个处理字符串,节省了内存空间,但代码逻辑稍微复杂。

代码实现

**第一种方法的代码示例**: ```cpp #include
#include
#include

using namespace std;

int main() {

string mys;
getline(cin, mys);
reverse(mys.begin(), mys.end());
auto start = mys.begin();
while (start != mys.end()) {
auto end = start;
while (end != mys.end() && *end != ' ')
end++;
reverse(start, end);
if (end != mys.end())
start = end + 1;
else
start = end;
}
cout << mys << endl;
return 0;
}

**第二种方法的代码示例**:  
```cpp
#include
#include
using namespace std;
int main() {
string mys1, mys2;
cin >> mys2;
while (cin >> mys1)
mys2 = mys1 + ' ' + mys2;
cout << mys2 << endl;
return 0;
}
上一篇:[C++系列] 48. string类基础知识点
下一篇:[每日一题] 3. 排序子序列--编程题(贪心+模拟+思维)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年05月18日 20时20分47秒