翻轉句子中單詞的順序

2021-09-22 10:46:18 字數 2832 閱讀 7980

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

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

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

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

先整體翻轉,再翻轉各個單詞。

參考**: 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

///

// reverse a string between two pointers

// input: pbegin - the begin pointer in a string

//        pend   - the end pointer in a string

///

voidreverse(char*pbegin,char*pend)

}

///

// reverse the word order in a sentence, but maintain the character

// order inside a word

// input: pdata - the sentence to be reversed

///

char* reversesentence(char*pdata)

// a word is between with pbegin and pend, reverse it

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

else

}

returnpdata;

}

在英語句子中,單詞被空格符號分隔,因此我們可以通過掃瞄空格來確定每個單詞的起始和終止位置。在上述**的翻轉每個單詞階段,指標pbegin指向單詞的第乙個字元,而pend指向單詞的最後乙個字元。

翻轉句子中單詞的順序

題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 分析 由於編寫字串相關 能夠反映程式設計師的程式設計能力和程式設計習慣,與字串相關的問題...

翻轉句子中單詞的順序

程式設計師面試題精選 07 翻轉句子中單詞的順序 題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 分析 由於編寫字串相關 能夠反映程式設...

翻轉句子中單詞的順序

翻轉句子中單詞的順序。題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 第乙個想法是借助棧實現,每解析乙個單詞壓棧,解析完依次出棧,要求額...