只将字符串内部逆转,比如说输入为we are girl,结果变为ew era lrig。
最初写的程序为
int main()
{
string a;
int beg = 0;
int end = 0;
getline(cin, a);
for (int i = 0; i < a.size(); i++)
{
if (a[i] == ' ')
{
end = i-1;
vector<char> zj;
for (int j = end; j >= beg; j--)
{
char zjz;
zjz = a[j];
zj.push_back(zjz);
}
for (int j = beg; j <= end; j++)
{
a[j] = zj[j - beg];
}
beg = i + 1;
}
if (i == a.size()-1)
{
end = i;
vector<char> zj;
for (int j = end; j >= beg; j--)
{
char zjz;
zjz = a[j];
zj.push_back(zjz);
}
for (int j = beg; j <= end; j++)
{
a[j] = zj[j - beg];
}
}
}
cout << a << endl;
while (1);
return 0;
}
当然也可以用指针的方法啦
char* reversesetence(char *a)
{
if (a == NULL)
return NULL;
char *pbegin = a;//这种方法默认指向第一个位置
char *pend = a;
while (*pbegin != '\0')
{
if (*pbegin == ' ')
{
pbegin++;
pend++;
}
else if (*pend == ' ' || *pend == '\0')
{
reverseit(pbegin,--pend);
pbegin = ++pend;
}
else
{
pend++;
}
}
return a;
}
void reverseit(char* pbegin, char* pend)
{
if (pbegin == NULL || pend == NULL)
return;
while (pbegin < pend)
{
char temp = *pbegin;
*pbegin= *pend;
*pend = temp;
pbegin++, pend--;
}
}