标签:begin string int 557 单词 字符串 include III 翻转
题目:翻转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
题目解析:
- 本题目中与直接翻转不同的是:以空格为分界符,对每个单词进行单独的顺序反转;
- 需要注意的是,在string类型中,判断其中的字符是否为空格,不能采用s[i]==" "的形式,要使用ctype.h中的isspace(s[i])来进行判断;
- 同时,C++中判断string类型的字符串是否结束,并不是使用'\0'的形式(字符串数组是),我们采用判断当前i是否等于字符串长度来判断结束。
代码:
#include <iostream> #include<algorithm> #include<string.h> #include<ctype.h> using namespace std; class Solution{ public: string reverseWords(string s){ int i=-1; //当前坐标 int begin_s=0; //字符串中单词的开始坐标 while(i!=s.size()) {++i; if(isspace(s[i])||i==s.size()) { reverse(s.begin()+begin_s,s.begin()+i); //begin_s与i-1之间为整个单词 begin_s=i+1; } } return s; } }; int main() { Solution f; cout << f.reverseWords("abc efg") << endl; return 0; }
结果截图:
原字符串:"abc efg"
题目链接:
https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/
标签:begin,string,int,557,单词,字符串,include,III,翻转 来源: https://www.cnblogs.com/Ycc-LearningRate/p/13584560.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。