我试图递归地交换字符串的两个索引,但我一直在收到分段错误。任何人都可以告诉我哪里出错了吗?这都是一个void函数,它接受三个参数,单词(字符串),first和last作为交换位置
int count = 0;
if(words.length() == 0)
return;
if(words.length() < last)
return;
if(words[first] > words[last])
return;
if(words.at(first + 1)){
words[first] = words[last + count];
reverseit(words, first, last);
}
if(words.length() >= last){
words[last - 1] = words[last];
words[last] = words[last -1];
// words[first + 1] = words[first];
// words[first] = words[first +1];
count++;
reverseit(words, first, last);
}
答案 0 :(得分:0)
我无法从您的描述或代码中弄清楚您的功能应该做什么。这是我最好的猜测 - 如果错了,请相应地更新您的问题:
#include <string>
#include <iostream>
void reverseit(std::string &words, size_t first, size_t last) {
size_t length = words.length();
if (length == 0 || last > length || first >= last) {
return;
}
char temp = words[last];
words[last] = words[first];
words[first] = temp;
reverseit(words, first + 1, last - 1);
}
int main(int argc, char *argv[]) {
std::string str = "abcdefghijklmnopqrstuvwxyz";
reverseit(str, 6, 18);
std::cout << str << std::endl;
return 0;
}
产地:
> ./a.out
abcdefsrqponmlkjihgtuvwxyz
>