華為-賽門鐵克面試題
題目:輸入一句英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變,句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如:輸入「i am a boy.」,則輸出「boy. a am i」。
題目**於:
思路一:
這個題目之前在看迅雷的面試題時看到過,所以現在再看到這個題目當然就會比較有想法,然而當我第一次看到這個題目的時候,我的想法是這樣:
第一步:先把整個字串翻轉.
第二步:再把翻轉後的字串中從頭到尾進行遍歷,遍歷的過程中遇到空字元就把空字元之前的單詞進行翻轉,反覆這樣直到結束.
如:
i am a boy.
第一步:
.yob a ma i
第二步:
(1) boy. a ma i
(2) boy. a ma i
(3) boy. a am i
(4) boy. a am i
經過第二步的(4)就可以達到要求了。
不過有一點我們要注意就是當這個句子只有乙個單詞的時候就不需要進行翻轉了,所以我們要在進行前面兩個步驟之前要先判斷一下是否需要翻轉,如果不需要就不做任何動作。
/*----------------------------------
-----------------------------------*/
#include "stdafx.h"
#include #include using namespace std;
#define key_char ' '
void reversestring(char *pszstr, int i32firindex, int i32endindex)
}bool isneedreversestring(char *pszstr, int nlen)
} return bret;
}int _tmain(int argc, _tchar* argv)
; if (isneedreversestring(aszstr, strlen(aszstr)))
}reversestring(aszstr, i32curidx, (int)strlen(aszstr) - 1);
} cout << aszstr << endl;
return 0;
}
字串 反轉單詞不反轉單詞內容
反轉句中的單詞 單詞內容不變 比如 輸入wuhan is dog 輸出 dog is wuhan 和字串迴圈左移類似 兩次反轉 先整體反轉 再用split函式 分割 再依次反轉合併 class solution public string fun string s stringbuffer sb n...
字串反轉,單詞反轉
一 字串反轉,共蒐集了 7 種方法 public class stringreversed public static void reverse1 string s char c s.tochararray 方法二 for int i 0 i s.length 2 i for char l c sy...
字串單詞反轉
class solution param s,a string return a string def reversewords self,s if len s 0 return s s join s.split 去掉所有的空格,只保留字元 串 之間的空格 s s.strip strip 去掉字串兩...