gpt4 book ai didi

c++ - 有没有办法在不使用任何迭代的情况下按字母顺序排列字符串中的字符?

转载 作者:太空狗 更新时间:2023-10-29 22:54:08 24 4
gpt4 key购买 nike

我正在尝试编写一个可以按字母顺序排列字符数组的函数(使用递归)。我不能在此函数中使用任何迭代循环,而且我最初的尝试存在缺陷。如果我也不能使用任何 C++ 内置函数,我想知道首先这个任务有多大可能

string alphaSort(string s) {
if (s.length() == 0|| s.length()==1) { //end of string
return s;
}
else {

if (s[0] > s[s.length()-1]) {
char temp = s[s.length() - 1];
s[s.length() - 1]=s[0];
s[0] = temp;
return alphaSort(s.substr(0, s.length() - 1) )+s[s.length() - 1];

}
else {
return s[0]+alphaSort(s.substr(1, s.length() - 1));
}
}

}

最佳答案

这是一个使用递归而不使用基于冒泡排序算法的循环的片段。

void swap(char* src, char* dest) { 
char temp = *src;
*src = *dest;
*dest = temp;
}

void foo(string& p, int i=0, int j = 1) {

static int n = p.size();
if (i == n - 2) return; // exit function if the index is total = (entries -2)
if (j > n - 1) {
++i; // increment index i to check next lot
j = i+1;
}
if (p[i] > p[j]) swap(&p[i], &p[j]);
foo(p, i, ++j);
}

int main()
{
string s="zello";
foo(s);
cout << s;
}

关于c++ - 有没有办法在不使用任何迭代的情况下按字母顺序排列字符串中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57237769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com