我正在準備入門級面試。我試圖扭轉字符串中單詞的順序,但是我的輸出是一堆毫無意義的垃圾。我認爲這個問題可能是因爲我爲我的功能使用了「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;
}
的[反話的字符串中的排序]可能重複(http://stackoverflow.com/questions/1009160/reverse-the-字符串排序) – tenfour
如果沒有網頁的警告,你甚至可以問這個問題,已經有100萬次了? – tenfour
對於循環簽名,不應該是:for(int i = a; i> b + 1; i - )'(使用'>'而不是'<'並遞減'i')。 – 0x499602D2