日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 151. 翻转字符串里的单词 c代码 三种方案

發布時間:2025/4/5 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 151. 翻转字符串里的单词 c代码 三种方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如題:

給定一個字符串,逐個翻轉字符串中的每個單詞。示例 1: 輸入: "the sky is blue" 輸出:?"blue is sky the"示例 2: 輸入: " ?hello world! ?" 輸出:?"world! hello" 解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。示例 3: 輸入: "a good ? example" 輸出:?"example good a" 解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個說明: 無空格字符構成一個單詞。 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。進階: 請選用 C 語言的用戶嘗試使用?O(1) 額外空間復雜度的原地解法。

這道題在數組專項練習遇到過,第一反應就是簡單,沒多想,上去就是擼代碼,結果考慮邊界用時N分鐘,暈了過去。

回過頭仔細思考了下,這道題邏輯不難,但是邊界處理部分很重要,稍有不慎就會出錯,尤其是c語言。

方案大概有三種:

方法1:從后往前逐個拷貝單詞到另一個數組中,需要使用額外數組空間N。
方法2:像鏡像一樣,先反轉整個字符串,然后逐個反轉每個單詞,最后去除頭部空格,中間空格以及尾部空格。此方案優點是空間復雜度低。


方法3:使用棧,從后往前將單詞入棧,然后順序出棧即可,同方法1一樣,需要使用額外輔助空間。

題目進階要求c語言使用O(1)復雜度,方案2可滿足要求。三種方案都不復雜,但是代碼實現還是很能考驗水平,建議多練。

下面是方案2 鏡像反轉的c代碼實現:

/** 特殊情況:參數為空或者長度小于1* 方法1:從后往前逐個拷貝單詞到另一個數組* 方法2:反轉整個字符串,然后反轉每個單詞* 方法3: 從后往前應該使用棧*/void swap(char *a, char *b) {*a = *a ^ *b;*b = *a ^ *b;*a = *a ^ *b; }void reverseWord(char *s, int first, int end) {if (first == end)return;while(first < end)swap(s+(first++), s+(end--));return; }char * reverseWords(char * s){int i, j, first, last,len,c;char *p, clast;//參數為空或者長度為0返回if (!s || strlen(s) < 1)return s;//反轉字符串len = strlen(s);for (i = 0, j = len - 1; i < j;){if (s[i] != s[j])swap(s+(i++), s+(j--));else{i++; j--;} }//反轉每個單詞last = first = 0;while (1){while(first < len && s[first] == ' ')first++; if (first >= len)break;else{last = first;while(last < len && s[last] != ' ')last++;reverseWord(s, first, last - 1);}if (last >= len)break;first = last;}printf("%s\n", s);//去除開頭空格i = 0;while(i < len && s[i] == ' '){len--;s++;} if (len < 0)return s;//刪除多余空格for (i = 0, j = 0, c = 0; i < len-1; i++){while (i < len - 1 && s[i] == ' ' && s[i] == s[i+1]){c++; i++;}if (c && i < len - 1 && s[i+1] != ' '){i++;while(i < len && s[i] != ' '){swap(s+i-c, s+i);i++;}i--;}}//去除末尾空格len = strlen(s);while(len > 0 && s[len-1] == ' '){s[len-1] = '\0';len--;}return s; }

=============================================================================================

Linux應用程序、內核、驅動開發交流討論群(745510310),感興趣的同學可以加群討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。

總結

以上是生活随笔為你收集整理的leetcode 151. 翻转字符串里的单词 c代码 三种方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品男人的天堂 | 成人av高清在线 | 草草久久久无码国产专区 | 啪啪网站免费 | 蜜臀av中文字幕 | 成人在线观看免费 | 免费看的av片| 亚洲视频一区二区在线观看 | 在线观看亚洲天堂 | 麻豆免费av | 色窝窝无码一区二区三区成人网站 | 中文字幕日本人妻久久久免费 | 少妇又白又嫩又色又粗 | 亚洲欧美日韩在线看 | 看污网站 | 亚洲av无码片一区二区三区 | 欧美精品123 | 日本少妇在线观看 | 胖女人做爰全过程 | 欧美激情18p | 538国产精品一区二区免费视频 | 国产嫩草在线 | 国产成人免费av | 日韩欧美二区三区 | 日韩精品电影在线观看 | 欧洲一级片 | 国产在线精品播放 | 91插视频 | 宇都宫紫苑在线播放 | 亚洲天堂手机在线 | 免费无遮挡网站 | 精品国产一区二区三区四 | 一区二区三区视频免费在线观看 | avtt香蕉久久 | 成人免费一级片 | 精品欧美一区二区在线观看 | 欲求不满的岳中文字幕 | 91香蕉在线看 | 冲田杏梨 在线 | 亚洲精品国产成人无码 | 欧美a一级 | www.色播.com| 国产午夜在线播放 | 特级毛片www | 欧美日韩国语 | 久久久久久久久久艹 | 日韩高清网站 | 欧美va亚洲va | 久久永久免费视频 | 午夜在线一区二区三区 | 色偷偷成人 | 日本人妻伦在线中文字幕 | 谁有毛片网站 | 欧美色交 | 久久精精品久久久久噜噜 | 男人和女人在床的app | 日本在线视频免费观看 | 亚洲欧美另类一区 | 羞羞动漫免费观看 | 亚洲日本激情 | 爱情岛论坛成人 | 免费无码不卡视频在线观看 | 在线色综合| 美女网站在线免费观看 | 国产福利小视频在线 | 亚洲精品乱码久久久久久蜜桃动漫 | 黄色片在哪看 | 色视频在线观看 | 豆花在线视频 | 意大利少妇愉情理伦片 | 麻豆传谋在线观看免费mv | 日韩精品在线一区二区三区 | 亚洲综合在线一区二区 | 久久国产精品免费视频 | 韩国主播青草55部完整 | 国产寡妇色xxⅹ交肉视频 | 久久久久久久久影院 | 久久久久久黄 | 性生交大片免费看视频 | 国内精品偷拍 | 亚洲精华国产精华精华液网站 | 看毛片视频| 国产亚洲制服 | 性xxxfllreexxx少妇 | 97激情| 中文字幕一区二区人妻在线不卡 | 亚洲一级片免费 | 欧美另类69 | 国产嫩草在线 | 久久99综合 | 伊人国产在线视频 | 九九热精品在线观看 | 欧美一区二区福利视频 | 久草精品在线 | 精品无码国产一区二区三区51安 | a毛片基地 | 精品一区二区三区在线免费观看 | 91国产在线免费观看 | 日韩精品久久久久久久酒店 |