atoi實現和翻轉乙個字串句子

2021-05-26 08:51:15 字數 1771 閱讀 7498

int m_atoi(const   char   *s)

else if(c=='.')

break;

else if(c=='-')

else

return   0;                     //invalid   string

}if(isthan0) return   i;

else return 0-i;

}翻轉句子中單詞的順序。

題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。

為簡單起見,標點符號和普通字母一樣處理。

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

第乙個想法是借助棧實現,每解析乙個單詞壓棧,解析完依次出棧,要求額外較大的空間開銷;

仔細思考就可以得到如下結果:

首先把整個句子反轉為 .tneduts a ma i

再次對每個單詞反轉為 students. a am i

就可以滿足要求,並且只在交換時需要較少的額外空間開銷;

**實現如下:

view plaincopy to clipboardprint?

01.// 反轉字串,給出字串開頭和結尾指標  

02.void wrvs_reversestring(tchar *pbegin, tchar *pend)  

03.  

09. 

10.    // 反轉字串  

11.    tchar tmpchar;  

12.    while (pbegin < pend)  

13.      

20.}  

21. 

22.// 反轉句子  

23.tchar* wrvs_reversesentence(tchar *psentence)  

24.  

30. 

31.    // 查詢句子結尾  

32.    tchar *pend = psentence;  

33.    while (*pend != _t('/0'))  

34.      

37.    pend--;  

38. 

39.    // 反轉整個句子  

40.    tchar *pbegin = psentence;  

41.    wrvs_reversestring(pbegin, pend);  

42. 

43.    // 對反轉之後的每個單詞再次反轉  

44.    pbegin = psentence;  

45.    pend = psentence;  

46.    while (*pbegin != _t('/0'))  

47.      

54.        // pbegin和pend之間是乙個單詞則反轉  

55.        else if (*pend==_t(' ') || *pend==_t('/0'))  

56.          

62.        else 

63.                 

66.    }  

67. 

68.    // 返回反轉後結果  

69.    return psentence;  

70.} 

遞迴翻轉乙個字串

編寫乙個函式reverse string char string 遞迴實現 實現 將引數字串中的字元反向排列。要求 不能使用c函式庫中 的字串操作函式。解法一 include include int my strlen char arr return count void reverse strin...

將乙個字串進行翻轉顯示

今天練習c 的乙個功能,就是將乙個字串時行翻轉顯示 如 string str insus.net 翻轉成為 string str ten.susni 方法與寫法很多。方法一 public void reversal string input console.writeline result sour...

判斷乙個字串是否是另乙個字串翻轉後的結果

字串abcdef向左翻轉一位的結果為fabcde,向右翻轉翻轉一位的結果為bcdefa.向左翻轉兩位的結果為efabcd,向右翻轉兩位的結果為cdefab。要判斷乙個字串是否是另乙個字串翻轉後的結果,必須遍歷向左翻轉和向右翻轉0 len arr 1位的所有情況。我定義了乙個翻轉函式reverse,返...