經典演算法 字串倒置

2021-08-01 04:36:32 字數 1451 閱讀 6868

這個就很簡單了,直接發**吧!

#include

#include

using

namespace

std;

string reverse(string s)

return s;

}int main()

演算法很簡單,就不細說了。這裡要注意的是length和strlen的區別。

兩者都是求字串的長度。

length(「abcd」)的值為5,包含後面的乙個』\0』

strlen(「abcd」)的值為4,不計算後面的』\0』

但strlen的引數必須是char*,而s.length()是string型別的物件s的成員方法。所以他們用在不同的地方。

舉個例子:

char* ch = 「sdsfdsdf」;

string s = 「sdsadsd」;

cout<

int strlen(const

char *str)

return len;

}

擴充套件:

題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。

例如輸入「i am a student.」,則輸出「student. a am i」**

演算法思想:先顛倒句子中的所有字元。這時,不但翻轉了句子中單詞的順序,而且單詞內字元也被翻轉了。我們再顛倒每個單詞內的字元。由於單詞內的字元被翻轉兩次,因此順序仍然和輸入時的順序保持一致。

以上面的輸入為例子。翻轉「i am a student.」中所有字元得到「.tneduts a ma i」,再翻轉每個單詞中字元的順序得到「students. a am i」,正是符合要求的輸出

char* reverse(char* pbegin,char* pend)

while(pbegin*pbegin;

*pbegin=*pend;

*pend=temp;

pbegin++;

pend--;

}return pbegin;

}char* reversesetence(char *pdata)

char *pbegin=pdata;

char *pend =pdata;

while(*pend!='\0')

pend--;

reverse(pbegin,pend);

pbegin=pend=pdata;

while(*pbegin!='\0')

else

if(*pend==' '||*pend=='\0')

else

}return pdata;

}

倒置字串

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

倒置字串

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

倒置字串

有乙個字元陣列的內容為 student a am i 請你將陣列的內容改為 i am a student 要求 不能使用庫函式。只能開闢有限個空間 空間個數和字串的長度無關 例如 i am a student 通過逆置到如下 student a am i i ma a tneduts 源 如下 in...