递归字符串交换

时间:2016-04-15 21:53:07

标签: c++ string recursion

我试图递归地交换字符串的两个索引,但我一直在收到分段错误。任何人都可以告诉我哪里出错了吗?这都是一个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);
}

1 个答案:

答案 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
> 
相关问题