我正在尝试使用以下代码反转字符串:
string reverseStringHelper(const char* s, bool flag) {
if(*s == '#') {
return "";
}
if(flag) {
return reverseStringHelper(s+1, 0) + *s + "\0";
} else {
return reverseStringHelper(s+1, 0) + *s;
}
}
string reverseString(string s) {
s = s+'#';
return reverseStringHelper(s.c_str(), 1);
}
我非常适合测试用例,例如:
"Hello"
,"Hello World"
但是对于以下情况失败:
"Hello World
New World!"
为什么有人能解释一下?
答案 0 :(得分:3)
我不确定你为什么要添加#
字符,因为c_str
会给你一个指向空终止字符串的指针,但如果你想要一个更加C ++友好的方式来反转一个字符串只需使用rbegin
和rend
:
std::string text = "Hello, world";
std::string reversed(text.rbegin(), text.rend());