倒置字串

2021-09-24 02:23:58 字數 1287 閱讀 5280

有乙個字元陣列的內容為:「student a am i」, 請你將陣列的內容改為"i am a student".

要求: 不能使用庫函式。

只能開闢有限個空間(空間個數和字串的長度無關)。

例如 :i am a student 通過逆置到如下:

student a am i

i ma a tneduts

源**如下:

#include #include #pragma warning (disable :4996)

int mystrlen(char *str)

return count;

}

void reverse(char *left, char *right)

}

void reversestr(char str)

reverse(start, cur - 1);

if (*cur == ' ')}}

int main()

; char *left = str;

char *right = str + mystrlen(str) - 1;

printf("原字串: %s\n", &str);

reverse(left, right);

printf("逆置字串: %s\n", &str);

reversestr(str);

printf("逆置字串中的單詞: %s\n", &str);

system("pause");

return 0;

}

執行結果:

個人理解:

該演算法的核心思想是新建乙個字元型指標變數通過迴圈去遍歷,如果遇到空格且不是『\0』說明乙個單詞還沒遍歷完。

而倒置需要兩個位址引數,所以在迴圈裡面通過新建另乙個字元型指標變數作為開始,

而cur會自加,所以一直到不滿足迴圈條件的時候(即找到了『 』或著到了『\0』),停止自加,然後逆置這個單詞,

此時cur指向字串的最後乙個字元的位址。

再判斷是不是最後乙個字元,如果不是則再自加一次,說明空格遍歷完到了下個單詞了。

再下此進入迴圈時,cur指向的是下個單詞的首位址,用start指向此時的這個首位址,

然後再用cur遍歷到最後乙個單詞,直到最後遇到『\0』為止,跳出迴圈。

倒置字串

題目描述 通過鍵盤輸入任意乙個字串序列,除空格 製表符和換行符外,可能包含其他任意字元。請編寫乙個程式,自動實現倒置字串中的各個字元的位置。如果輸入 abc 結果將是 cba 輸入 輸入字串,長度不超過為100 輸出 輸出字串 樣例輸入 abc樣例輸出 cba提示 你的程式應該從標準輸入stdin ...

倒置字串

通過鍵盤輸入任意乙個字串序列,除空格 製表符和換行符外,可能包含其他任意字元。請編寫乙個程式,自動實現倒置字串中的各個字元的位置。如果輸入 abc 結果將是 cba 解法一 stl解法 include include include using namespace std int main cout...

倒置任意字串

我們用 說話public class test 接下來只需要將字元陣列再轉換成字串,並賦值給原字串變數即可 4.通過string的靜態方法valueof 將字元陣列轉化為字串 string aa string.valueof c 5.將 aa 的值賦給原字串即可 a aa system.out.pr...