Reverse Words in a String
2014-10-27 12:50
531 查看
题目要求:
Given an input string, reverse the string word by word.
For example,
Given s = "
return "
分析:
初步分析,有两种思路:
1、采用剑指offer中所讲的两次翻转字符串解法,先将整个字符串翻转一次,再对每个单词翻转一次。
2、遍历字符串,将单词抠出来拼接成目标串dest,具体是每抠出一个单词串temp,拼接在原有目标串前面,即dest=temp+' '+dest;
本人采用思路一完成代码,此题虽然不难,但还是错了好几次,主要是特例情况考虑不周,如情况:
s=" "
s=" a "
代码:
#include <iostream>
#include<string>
using namespace std;
class Solution {
public:
void reverseWords(string &s) {
if(!s.empty())
{
int n=s.size()-1;
int high=0;
int low=0;
bool sign=true;
reverse_range(s,0,n);
while(high<=n)
{
if(s[high]!=' ')
{
if(high==n)
{
reverse_range(s,low,n);
}
high++;
sign=false;
}
else
{
if(sign==false)
{
reverse_range(s,low,high-1);
high++;
low=high;
sign=true;
}
else
{
s.erase(high,1);
n--;
}
}
}
if(s
==' ')
{
s.erase(n,1);
n--;
}
}
}
void reverse_range(string &s,int low,int high)
{
char tmp=NULL;
while(low<high)
{
tmp=s[low];
s[low]=s[high];
s[high]=tmp;
low++;
high--;
}
}
};
void main()
{
string src=" this is a test ";
Solution s;
s.reverseWords(src);
cout<<src<<endl;
getchar();
}
Given an input string, reverse the string word by word.
For example,
Given s = "
the sky is blue",
return "
blue is sky the".
分析:
初步分析,有两种思路:
1、采用剑指offer中所讲的两次翻转字符串解法,先将整个字符串翻转一次,再对每个单词翻转一次。
2、遍历字符串,将单词抠出来拼接成目标串dest,具体是每抠出一个单词串temp,拼接在原有目标串前面,即dest=temp+' '+dest;
本人采用思路一完成代码,此题虽然不难,但还是错了好几次,主要是特例情况考虑不周,如情况:
s=" "
s=" a "
代码:
#include <iostream>
#include<string>
using namespace std;
class Solution {
public:
void reverseWords(string &s) {
if(!s.empty())
{
int n=s.size()-1;
int high=0;
int low=0;
bool sign=true;
reverse_range(s,0,n);
while(high<=n)
{
if(s[high]!=' ')
{
if(high==n)
{
reverse_range(s,low,n);
}
high++;
sign=false;
}
else
{
if(sign==false)
{
reverse_range(s,low,high-1);
high++;
low=high;
sign=true;
}
else
{
s.erase(high,1);
n--;
}
}
}
if(s
==' ')
{
s.erase(n,1);
n--;
}
}
}
void reverse_range(string &s,int low,int high)
{
char tmp=NULL;
while(low<high)
{
tmp=s[low];
s[low]=s[high];
s[high]=tmp;
low++;
high--;
}
}
};
void main()
{
string src=" this is a test ";
Solution s;
s.reverseWords(src);
cout<<src<<endl;
getchar();
}
相关文章推荐
- Reverse Words in a String II
- LeetCode *** 151. Reverse Words in a String
- Leetcode Reverse Words in a String
- Reverse Words in a String
- Reverse Words in a String
- Lintcode53 Reverse Words in a String solution 题解
- Reverse Words in a String
- leetcode Reverse Words in a String
- leetcode Reverse Words in a String
- Leetcode NO.186 Reverse Words in a String II
- 151. 翻转字符串里的单词(Reverse Words in a String)
- [leetcode] Reverse Words in a String
- lintcode 容易题:Reverse Words in a String 翻转字符串
- Reverse Words in a String
- leetcode:Reverse Words in a String【Python版】
- [leetcode151] Reverse Words in a String
- Reverse Words in a String
- [LeetCode]Reverse Words in a String
- [leetcode]Reverse Words in a String
- [leetcode 151] Reverse Words in a String