gpt4 book ai didi

c++ - 字符串中单词的逆序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:32 27 4
gpt4 key购买 nike

我正在准备入门级工作面试。我试图颠倒字符串中单词的顺序,但我的输出是一堆毫无意义的垃圾。我认为问题可能是因为我在函数中使用“char*”?无论如何,这是我的代码

#include <iostream>
#include <string>
using namespace std;

char* reverse(char* str, int a, int b);
char* reversewords(char* str);

int main()
{
char str[] = "The interview is";
cout<<"Reverse is: "<<reversewords(str);
cin.ignore();
return 0;
}


char* reverse(char* str, int a, int b)
{
int length = a-b;

for (int i=a; i<b+1; i++)
{
char c =str[length-i-1];
str[length-i-1]=str[i];
str[i] = c;
}
return str;
}

char* reversewords(char* str)
{
int length = strlen(str);
int a=0;
int b=0;
while (b<length)
{
if (str[b]==' ' || b==length-1)
{
b=b-1;
reverse(str, a, b);
a=b+2;
b=a;
}
b++;
}
return str;
}

最佳答案

我想重申一下 WeaselFox 所说的不要重新发明轮子,尝试学习 C++ STL,从长远来看会更有帮助。

话虽如此,让我也推荐一种方法。每当您遇到诸如反转字符串中字符的顺序或反转字符串中单词的问题时,面试官实际上是在测试您对数据结构的了解,在这种情况下,尤其是“堆栈”数据结构。

考虑一下如果您解析字符串中的单词并将它们一次一个地放入一个数组中会发生什么:"我是一个字符串"--> {"我", "AM", "A", "字符串"}

现在对堆栈做同样的事情:

“我是一个字符串”--> {“字符串”、“A”、“上午”、“我”

您明白为什么堆栈会有用吗?最好是你自己推理出来,而不是我提供源代码,原因是你的方法是不正确的,不管它是否产生正确的答案。

希望对您有所帮助!

关于c++ - 字符串中单词的逆序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22125096/

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