題目:
#include <iostream>
#include <string>
#include<algorithm>
using namespace std;
string reverse(const string& s, const char c)
{
string ret = "";
unsigned int Foundindex = 0, StartIndex = 0;
string tmpString = "";
Foundindex = s.find(c); //find返回c在字符串中的位置
if (Foundindex == s.npos) //未找到字符 返回npos
return s;
if ((Foundindex == 0) && (s.length() == 1))
return ret + c;
while (1)
{
tmpString = s.substr(StartIndex, Foundindex - StartIndex); //從StartIndex開始到Foundindex - StartIndex 取出子串
reverse(tmpString.begin(), tmpString.end()); //翻轉
ret += tmpString;
StartIndex = Foundindex+1;
Foundindex = s.find(c, Foundindex + 1); //找到下一個c字符的位置
if (Foundindex != s.npos)
{
ret += c;
}
else //在接下來的子串中無法找到c字符
{
ret += c;
tmpString = s.substr(StartIndex, s.length()); //從StartIndex開始到字符串結束位置 取出子串
reverse(tmpString.begin(), tmpString.end());
ret += tmpString;
break;
}
}
return ret;
}
int main()
{
cout << reverse("", ';') << endl; // 輸出:空字符串
cout << reverse(";", ';') << endl; // 輸出:;
cout << reverse("abcde;", ';') << endl; // 輸出:edcba;
cout << reverse("we;tonight;you", ';') << endl; // 輸出:ew;thginot;uoy
return 0;
}
運行結果
;
edcba;
ew;thginot;uoy