我正在准备初级工作面试。我试图反转字符串中单词的顺序,但我的输出是一堆毫无意义的垃圾。我认为问题可能是因为我在函数中使用“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”,“AM”,“我”}
你明白为什么堆栈会有用吗?如果你自己推理出来比我提供源代码更好,因为无论你的方法是否产生正确的答案,你的方法都是不正确的。
我希望这有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)