gpt4 book ai didi

c++ - 你会如何改进这个算法? (c 弦反转)

转载 作者:可可西里 更新时间:2023-11-01 18:40:09 24 4
gpt4 key购买 nike

为了解决我在网上发现的一些编程面试挑战,我不得不编写一个算法来反转 const char * 并返回指向新 char * 的指针。我想我有它,但为了让它正常工作,我不得不做一些奇怪的事情——基本上必须自己解释空终止字符。不知怎的,我觉得这是错误的,但我很困惑,我想知道是否有人可以帮助我:

char * reverse(const char * str)
{
int length = strlen(str);
char * reversed_string = new char[length+1];

for(int i = 0; i < length; ++i)
{
reversed_string[i] = str[(length-1) - i];
}
//need to null terminate the string
reversed_string[length] = '\0';

return reversed_string;

}

int main(int argc, char * argv[])
{

char * rev_str = reverse("Testing");

cout << "Your string reversed is this: " << rev_str << endl;

delete rev_str;
rev_str = 0;

return 0;
}

最佳答案

std::reverse 来自 <algorithm>适用于字符串和 char数组:

string str = "Hello";
char chx[] = "Hello";

reverse(str.begin(), str.end());
reverse(chx, chx + strlen(chx));

cout << str << endl;
cout << chx << endl;

/EDIT:当然,这会修改原始字符串。但是 STL 来拯救。下面创建一个新的反转字符串。不幸的是(?),这不能直接在 C char 上工作数组而不创建额外的(隐式)拷贝:

string reverse_string(string const& old) {
return string(old.rbegin(), old.rend());
}

cout << reverse_string("Hello") << endl;

关于c++ - 你会如何改进这个算法? (c 弦反转),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/219420/

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