給定乙個字串,逐個翻轉字串中的每個單詞。
說明
單詞的構成:無空格字母構成乙個單詞
樣例
給出s = 「the sky is blue」,返回"blue is sky the"
使用std::string的find_first_of,以』 '為引數,將s分割成多個單詞並推進堆疊中,然後利用堆疊的先進後出的特點,以彈出的順序去得到逆序的字串。這樣會使用額外的空間來暫存堆疊的資料。
在原先的s的基礎上,利用兩個索引:tail , head將s整個翻轉,得到eulb si yks eht
可以觀察的到,eulb si yks eht與目標結果:blue is sky the的差別在於,前者每個單詞都是反的。
故可以使用std::string的find_first_of,以』 '為引數,將s分割成多個單詞,每個單詞再次使用上述方式:使用tail,head整體翻轉,即可得到目標結果。
string reversewords(string &s)
//再逐單詞逐單詞翻轉,這樣可以達到無需任何額外的空間即可翻轉成功
found = s.find_first_of(' ');
int curr = 0;
bool flag = true;
while (flag)
// temp_str = s.substr(curr, found - curr);
//翻轉temp
tail = found-1;//-1為去除空格
head = curr;
while (head < tail)
curr = found+1;
found = s.find_first_of(" ", found + 1);
} return s;
}
關於字串和記憶體空間的一些知識
include stdafx.h include include using namespace std char getspace int tmain int argc,tchar argv strcpy s str,sizeof hello tempstr cout str endl retur...
翻轉字串的解法
char reversestring char pstr return pstr char reversestring char pstr assert pstr null int len strlen pstr char p pstr static int i 1 用於p len i,p len ...
字串的翻轉總結
給定乙個字串,如 csdn 編寫函式返回翻轉為 ndsc 的結果。不考慮庫函式的情況下,採用遞迴的方式,每次返回從第二位開始的子串 同時遞迴下去 加上 第一位字元 直到遞迴到剩下乙個字元則直接返回即可。public class solution public static string myreve...