部分反转string
来源:互联网 发布:lolking软件 编辑:程序博客网 时间:2024/06/04 18:22
题目来源:
点击打开链接
题目描述:
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.
我的解决方案:
class Solution {public: string reverseWords(string s) { string ret,tmp; for(int i=0;i<s.size();++i) { if(s[i]!=' ') tmp.insert(0,1,s[i]); else { ret.append(tmp); if(i!=s.size()-1) { ret.insert(ret.size(),1,' '); tmp.clear(); } } } ret.append(tmp); return ret; }};
第一遍的错误解法:
class Solution {public: string reverseWords(string s) { string ret,tmp; for(int i=0;i<s.size();++i) { if(s[i]!=' ') tmp.insert(0,1,s[i]); else { ret.append(tmp); ret.insert(ret.size(),1,' '); tmp.clear(); } } return ret; }};
思考:
阅读题目描述,第一反应是分块反转每个单词,遇到空格停止,用一个临时变量来存储和反转每个单词,完成一个单词的反转之后,插入一个空格,追加到结果中,遍历完成来源string之后就完成了.题目不难,如果对对C++的string类的操作比较熟悉,就可以节省很多力气.第一遍写出来的代码结果有点问题,原因是因为来源string的末尾并没有空格,导致最后一次循环的时候else没有按照预想的执行,保存了反转后字符的tmp没有被追加到ret之后,所以输出少了一个单词.所以对最后一次进行了特殊处理,然后ac了
后来看别人的代码,发现还有更简单的方法,这里做一个引用(引用自Sublele,侵删)
class Solution {public: string reverseWords(string s) { size_t front = 0; for(int i = 0; i <= s.length(); ++i){ if(i == s.length() || s[i] == ' '){ reverse(&s[front], &s[i]); front = i + 1; } } return s; }};其中,reverse(front,end)函数的作用是反转一个容器内从front到end的所有内容
0 0
- 部分反转string
- String反转
- String反转
- c++反转单链表后半部分
- java string 反转
- String字符串反转
- string的反转
- java string 反转
- Reverse String 字符串反转
- String字符串反转方法
- string反转问题
- Java-String 反转
- String 字符串的反转
- string的反转
- Java单链表反转与部分反转
- 反转部分单向链表
- 反转部分单向链表
- 链表的部分反转
- 自己实现简单对象关系库之反射和注解
- PostgreSQL一些常用命令
- oracle group by 和mysql group by 区别
- java 获取路径的一些问题
- Unity打包安卓apk时或发布安卓程序时提示 Android Asset Packaging Tool Failed
- 部分反转string
- linux PHY驱动
- StatusBar之自定义状态栏颜色
- 服务器又被挖矿了
- 判断号码运营商
- 解读超轻量级DI容器-Guice与Spring框架的区别
- 关于PopWindow,不得不注意的那件事
- 再补上一篇-----微信企业号自定义菜单创建
- 我的c++常用宏