编写一个递归的,字符串值的函数replace,它接受一个字符串并返回一个由原始字符串组成的新字符串,每个空格用一个星号(*)替换 替换字符串中的空格包括:
如果字符串为空则无效
否则: 如果第一个字符不是空白,只需将其与替换字符串的其余部分
的结果连接即可如果第一个字符为空白,则将*与替换字符串其余部分的结果连接起来
这是我尝试过的:
string replace(string sentence){
if(sentence.empty()) return sentence;
string newString;
if(sentence[0] == " ") {
newString.append('*' + sentence.substr(1, sentence.length()));
} else {
newString.append(sentence.substr(1, sentence.length()));
}
return replace(newString);
}
但是测试代码以获得正确答案的网站给了我以下错误:
CTest1.cpp:在函数'std :: string replace(std :: string)':
中CTest1.cpp:9:错误:ISO C ++禁止指针和整数之间的比较
请注意,错误中的行不一定与代码中的实际行相关联。
有什么建议吗?
更新
使用以下代码解决它:
string replace(string sentence){
if(sentence.empty()) return sentence;
string newString;
if(sentence[0] == ' ') {
newString.append("*" + replace(sentence.substr(1)));
} else {
newString.append(sentence[0] + replace(sentence.substr(1)));
}
return newString;
}
答案 0 :(得分:3)
string sentence;
if(sentence[0] == " ")
" "
不是单个字符,而是整个字符串。如果您想要一个空白,请使用' '
答案 1 :(得分:0)