您的位置:首页 > 职场人生

字符串面试题(二)— 间隔字符串逆序

2017-01-30 18:56 190 查看
对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。给定一个原字符串A和它的长度,请返回逆序后的字符串。

例子:

“dog loves pig”

输出:

“pig loves dog”

示例代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
class Reverse {
public:
string reverseSentence(string A, int n)
{
reverseWord(A,0,n-1);
int i=0,j=0;
while(i<n)
{
while(i<n&&A[i]==' ')
i++;
if(i>=n)
return A;
j=i;
while(i<n&&A[i]!=' ')
i++;
if(i>=n)
{
reverseWord(A,j,n-1);
return A;
}
reverseWord(A,j,i-1);
}
return A;

}
void reverseWord(string &A,int low,int high)
//局部逆序函数
{
if(low>=high)
return;
char temp;
while(low<high)
{
temp=A[low];
A[low]=A[high];
A[high]=temp;
low++;
high--;
}
}
};
int main()
{
string arr("dog loves pig");
Reverse a;
a.reverseSentence(arr,13);
cout<<arr;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息