字符串反转
描述
输入一个字符串,字符串中包含字母符号等,仅对字母进行反转
编码
#include <iostream>
#include <algorithm>
using namespace std;
bool IsChar(char c) //判断是否为字母
{
if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
return true;
else
return false;
}
char GetNextChar(string str, int *len) //获取字符串中,从位置len开始的第一个字符与对应的位置。
{
while(!IsChar(str[*len]))
{
if(*len < str.length() - 1)
(*len)++;
}
if(*len < str.length())
{
return str[*len];
}
else
return NULL;
}
int main()
{
string str = "@a-bc-def-gh";
string res = str;
reverse(res.begin(), res.end());
string ret = "";
int length = str.length();
ret = new char[length];
int j = 0;
for(int i = 0; i < length; i++)
{
if(IsChar(str[i]))
{
if(IsChar(res[j]))
{
ret[i] = res[j];
j++;
}
else
{
ret[i] = GetNextChar(res, &j);
j++;
}
}
else
{
ret[i] = str[i];
}
}
cout << (char *)ret.c_str() << endl;
}
经测试,输入"@a-bc-def-gh",返回“@h-gf-edc-ba”。