C++中怎么利用LeetCode翻转字符串中的单词

1核2G云服务器
阿里云VPC云服务器
轻量级应用服务器
5M带宽领券更划算
学生机活动专享
¥9.5/月省126/月
2核4G云服务器
阿里云ECS云服务器
计算网络增强型实例
CPU性能不限
更高性价比
¥720.00/年省2060.40
2核4G云服务器
腾讯云CVM云服务器
标准型S4实例
5M不限速带宽
50G超大硬盘
¥1348/3年省10046
4核8G云服务器
腾讯云CVM云服务器
标准型S4实例
5M带宽超大硬盘
双十一活动专享
¥2010/年省18528

这篇文章将为大家详细讲解有关C++中怎么利用LeetCode翻转字符串中的单词,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

[LeetCode] 557.Reverse Words in a String III 翻转字符串中的单词之三

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

这道题让我们翻转字符串中的每个单词,感觉整体难度要比之前两道Reverse Words in a String II和Reverse Words in a String要小一些,由于题目中说明了没有多余空格,使得难度进一步的降低了。首先我们来看使用字符流处理类stringstream来做的方法,相当简单,就是按顺序读入每个单词进行翻转即可,参见代码如下:

解法一:

class Solution { public:     string reverseWords(string s) {         string res = "", t = "";         istringstream is(s);         while (is >> t) {             reverse(t.begin(), t.end());             res += t + " ";         }         res.pop_back();         return res;     } };

下面我们来看不使用字符流处理类,也不使用STL内置的reverse函数的方法,那么就是用两个指针,分别指向每个单词的开头和结尾位置,确定了单词的首尾位置后,再用两个指针对单词进行首尾交换即可,有点像验证回文字符串的方法,参见代码如下:

解法二:

class Solution { public:     string reverseWords(string s) {         int start = 0, end = 0, n = s.size();         while (start < n && end < n) {             while (end < n && s[end] != ' ') ++end;             for (int i = start, j = end - 1; i < j; ++i, --j) {                 swap(s[i], s[j]);             }             start = ++end;         }         return s;     } };

关于C++中怎么利用LeetCode翻转字符串中的单词就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

4核8G云服务器
阿里云ECS云服务器
计算网络增强型实例
CPU支持满载
新老用户限购1单
¥1390.00/年省3754.40
2核8G云服务器
阿里云VPC云服务器
通用网络增强型实例
CPU性能不限
最大内网带宽 10 Gbps
¥1050.00/年省2798.40
1核1G云服务器
阿里云入门级配置
T5型新手实例
1M独享带宽
适合个人站长及微企
¥293.00/月省300.40
4核8G云服务器
腾讯云CVM云服务器
标准型SA2实例
10M高速带宽
2折优惠直到月底
¥2299.00/1年省7007.00