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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

leetcode_zigzag conversion

發(fā)布時(shí)間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode_zigzag conversion 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:
The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P A H N
A P L S I I G
Y I R
And then read line by line: “PAHNAPLSIIGYIR”
我的答案:
版本一:

string convert(string s, int numRows) {if (numRows == 1)return s;int L = s.length();const char *p = s.c_str();vector<vector<char> > A;vector<char> a;int N = 0;while (N < L){if (N > L)break;for (int i = 0; i < numRows; i++){if (N < L){a.push_back(*(p + N));N++;}elsebreak;}A.push_back(a);a.clear();for (int i = numRows - 2; i > 0; i--){if (N < L){for (int j = 0; j < numRows; j++){if (N < L){if (j != i)a.push_back('\0');else{a.push_back(*(p + N));N++;}}elsebreak;}A.push_back(a);a.clear();}elsebreak;}}//對(duì)最后一列的數(shù)據(jù)進(jìn)行完善,因?yàn)樽址L(zhǎng)度是隨機(jī)的,所以最后一列可能在沒(méi)有裝滿之前,字符串已經(jīng)被分配完畢,所以采用這種方式補(bǔ)全,以進(jìn)行下面每行的鏈接int last_size = A[A.size() - 1].size();if (last_size != numRows){for (int i = 0; i < numRows - last_size; i++)A[A.size() - 1].push_back('\0');}//數(shù)據(jù)已經(jīng)存好for (int i = 0; i < A.size(); i++){for (int j = 0; j < A[i].size(); j++)cout << A[i][j] << " ";cout << endl;}stringstream ss;for (int i = 0; i < numRows; i++){for (int j = 0; j < A.size(); j++){if (A[j][i] == '\0')continue;elsess << A[j][i];}}return ss.str(); }

思路解析:遍歷整個(gè)字符串,將其按照之字形的結(jié)構(gòu),按列存儲(chǔ),顯然除了部分列的元素個(gè)數(shù)是numRows之外,其他列的元素個(gè)數(shù)都是1,為了后續(xù)字符重新排序的方便,將每列不含有字符串字符的地方用結(jié)束符代替,使得每列數(shù)據(jù)在存儲(chǔ)中占用相同的空間,在后續(xù)數(shù)據(jù)重新排序的時(shí)候,只需要循環(huán)遍歷所有的列并依次輸出各列的元素(遇到結(jié)束符的時(shí)候,不輸出該字符),在利用該方法的時(shí)候關(guān)鍵是保證一開(kāi)始在遍歷存儲(chǔ)字符串的時(shí)候要保證每列都占用相同的空間,并且所有列中的非結(jié)束符字符的存放結(jié)構(gòu)滿足之字形結(jié)構(gòu)。所以如果最后在遍歷字符串結(jié)束后,要判斷最后一列的元素是否為numRows個(gè),如不是需要利用結(jié)束符補(bǔ)全。整個(gè)算法的思想就是不用費(fèi)力去觀察之字形結(jié)構(gòu)的規(guī)律并建模,只需要按列存儲(chǔ)之后并循環(huán)遍歷輸出即可,比較好理解,但是運(yùn)行時(shí)間較長(zhǎng)。
版本二(進(jìn)階版):

string zigzag_convert(string s, int numRows) {if (numRows == 1)return s;if (numRows < 1)return "";int gap = 2 * numRows - 2;int val = 0;int L = s.length();string res = "";for (int i = 0; i < numRows; i++,val += 2){res += s[i];for (int j = i; j<L;){if ((gap - val) != 0){j += (gap - val);if (j < L)res += s[j];elsebreak;}if (val != 0){j += val;if (j < L)res += s[j];elsebreak;}}}return res; }

思路解析:該版本的思想是觀察之字形結(jié)構(gòu)并進(jìn)行建模。舉例說(shuō)明:
假設(shè)輸入字符串為S,
S=”abcdefghijklmnopqrstuvwxyz”;
numRows=5;
以下是之字形中每行元素在字符串中的下標(biāo)(為了方便表述,從數(shù)據(jù)存儲(chǔ)的角度出發(fā),引入第0行):
第0行:0 8 16 24
第1行:1 7 9 15 17 23 25
第2行:2 6 10 14 18 22
第3行:3 5 11 13 19 21
第4行:4 12 20
觀察以上下標(biāo),可以得到結(jié)論,除了第0行與最后一行,每相隔的兩個(gè)下標(biāo)之間的距離都是:gap=2*numRows-2,每行的第一個(gè)元素的下標(biāo)都與行號(hào)相同;第0行與最后一行的各元素相鄰下標(biāo)的距離為gap;根據(jù)這個(gè)規(guī)律寫出以上代碼。顯然,利用這種方法不會(huì)消耗多余的空間,而且只需要遍歷一次字符串即可,算法高效。

總結(jié)

以上是生活随笔為你收集整理的leetcode_zigzag conversion的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久噜噜色综合一区二区 | 日韩电影一区 | 不卡的中文字幕 | 亚洲综合图 | 色av免费 | 日韩夜夜| 特黄视频在线观看 | 国产一区二区三区四区三区四 | 超碰97在线资源 | 男插女视频网站 | 99色综合 | 国产资源网站 | 日本熟妇色xxxxx日本免费看 | 成人精品三级av在线看 | 男女午夜视频在线观看 | 色香天天| 熟女高潮一区二区三区视频 | 精精国产xxxx视频在线 | 熟女俱乐部一区二区视频在线 | 小色哥网站 | 色呦呦在线观看视频 | 精品人妻一区二区三区浪潮在线 | 国产精品美女视频 | 亚洲国产成人精品久久久 | 亚洲爱情岛论坛永久 | 成人免费在线网址 | 亚洲免费不卡视频 | 嫩草嫩草嫩草嫩草嫩草 | japanese av在线 | 亚洲免费黄色片 | 99re在线视频免费观看 | 熟女人妇 成熟妇女系列视频 | www国产精品内射老熟女 | 天天艹夜夜艹 | 亚洲在线一区二区 | 宅男噜噜噜666在线观看 | 欧美一区二区三区免费在线观看 | 久久综合激情 | 日韩乱淫| 婷婷啪啪 | 青青草日韩 | 国产人妖在线 | 日本激情视频在线观看 | 欧美99视频 | 精品视频免费在线 | 久久天堂视频 | 少妇人妻邻居 | 国产精品视频久久久久久 | 天天爽夜夜爽一区二区三区 | 免费成人深夜夜 | 美妇av| 久久无码人妻丰满熟妇区毛片 | 黄页网址大全免费观看 | 成人性生生活性生交全黄 | av福利网站 | 91丝袜国产在线播放 | 亚洲电影一区二区 | 久久久水蜜桃 | 欧美性色19p | 欧美美女性视频 | 国产精品无码一区二区三 | 中文字幕+乱码+中文乱码www | 丰满人妻一区二区三区53 | ass极品国模人体欣赏 | 亚洲国产精品麻豆 | 男女操操操 | 亚洲色图导航 | 女性向av免费网站 | 蜜臀久久99静品久久久久久 | 96精品视频 | 久久94| 亚洲性色视频 | 亚洲AV无码阿娇国产精品 | 久久精品一二区 | 色多多在线观看 | 四虎在线免费播放 | 欧美精品久 | 一道本久久 | 性欧美大战久久久久久久 | 美女精品久久久 | www.污在线观看 | 国产成人精品亚洲男人的天堂 | 少妇视频网 | 看全黄大色黄大片 | 全黄一级片 | 96日本xxxxxⅹxxx70 | 99er在线| 成人国产综合 | 天天射夜夜爽 | 亚洲伦理自拍 | 91麻豆成人精品国产免费网站 | avtt男人天堂 | 福利影院在线观看 | 国产乱码精品一区二区三区中文 | 久久这里只有精品23 | 人妻91麻豆一区二区三区 | 美女a视频 | 青青草原成人网 | 777片理伦片在线观看 |