无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

字符串模擬算法題

2023-02-10 15:15 作者:meiwanlanjun  | 我要投稿

我們來看一道很有意思的算法題目: 將一個(gè)給定字符串 s 根據(jù)給定的行數(shù) numRows ,以從上往下、從左到右進(jìn)行 Z 字形排列。 比如輸入字符串為 "PAYPALISHIRING" 行數(shù)為 3 時(shí),排列如下: P A H N A P L S I I G Y I R 之后,你的輸出需要從左往右逐行讀取,產(chǎn)生出一個(gè)新的字符串,比如:"PAHNAPLSIIGYIR"。 請(qǐng)你實(shí)現(xiàn)這個(gè)將字符串進(jìn)行指定行數(shù)變換的函數(shù): string convert(string s, int numRows); 復(fù)制代碼 大家先思考一下,如果是自己來解這道題,會(huì)如何來做?


這是一道字符串模擬題。


題目要求將字符串 s 以 Z 字形排列并返回按行讀取后的字符串。


我們可以創(chuàng)建一個(gè)字符串?dāng)?shù)組,其中每一行都是一個(gè)字符串。接下來,我們可以使用雙重循環(huán)遍歷字符串 s,并將字符添加到對(duì)應(yīng)的行中。


最后,我們將這些字符串按順序拼接起來,以得到按行讀取后的字符串。


代碼實(shí)現(xiàn)如下:

string convert(string s, int numRows) { ? ?if (numRows == 1) return s; ? ?vector<string> rows(min(numRows, int(s.size()))); ? ?int curRow = 0; ? ?bool goingDown = false; ? ?for (char c : s) { ? ? ? ?rows[curRow] += c; ? ? ? ?if (curRow == 0 || curRow == numRows - 1) goingDown = !goingDown; ? ? ? ?curRow += goingDown ? 1 : -1; ? ?} ? ?string ret; ? ?for (string row : rows) ret += row; ? ?return ret; }

這道題是一道非常有趣且有啟發(fā)性的題目,可以幫助我們提高我們的字符串模擬能力。


字符串模擬算法題的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
武城县| 隆化县| 杭锦后旗| 左云县| 石渠县| 荣昌县| 台前县| 曲松县| 息烽县| 开平市| 宕昌县| 龙江县| 沐川县| 清远市| 凉山| 杭锦后旗| 南召县| 百色市| 罗江县| 安仁县| 崇左市| 黄梅县| 吉首市| 津市市| 沅陵县| 黄平县| 宿迁市| 明光市| 丹阳市| 苏尼特右旗| 重庆市| 黑龙江省| 肇州县| 静乐县| 琼中| 峨眉山市| 长春市| 邮箱| 景泰县| 南川市| 梓潼县|