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,返...