卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

深入解析LeetCode--字符串的Z字形變換

題目簡述在LeetCode中有一道關(guān)于字符串Z字形變換的題目,要求將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行Z字形排列。本篇文章將分享通過遍歷字符串來填充各行數(shù)據(jù),然后再逐行輸出的算法

題目簡述

在LeetCode中有一道關(guān)于字符串Z字形變換的題目,要求將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行Z字形排列。本篇文章將分享通過遍歷字符串來填充各行數(shù)據(jù),然后再逐行輸出的算法。

解題思路

在解題前,我們先拋開題目描述,僅從最終的Z字形輸出來看,其本質(zhì)是遍歷字符串,將各個(gè)字符輸出到不同行中。核心在于行號的變化規(guī)則:當(dāng)處于第一行時(shí),行號遞增;當(dāng)來到最后一行時(shí),行號遞減。

代碼實(shí)現(xiàn)

首先,根據(jù)給定的行數(shù)和字符串長度確定最終輸出的行數(shù),然后創(chuàng)建相應(yīng)數(shù)量的StringBuilder列表用于存儲每行的字符。接著,遍歷字符串的所有字符,根據(jù)不同行號將字符添加到對應(yīng)的StringBuilder中,關(guān)鍵在于處理行號的變化規(guī)則。

```java

public String convert(String s, int numRows) {

if (numRows 1) return s;

List rows new ArrayList<>();

for (int i 0; i < Math.min(numRows, s.length()); i ) {

(new StringBuilder());

}

int curRow 0;

boolean goingDown false;

for (char c : ()) {

(curRow).append(c);

if (curRow 0 || curRow numRows - 1) goingDown !goingDown;

curRow goingDown ? 1 : -1;

}

StringBuilder result new StringBuilder();

for (StringBuilder row : rows) {

(row);

}

return ();

}

```

測試與輸出

通過編寫主方法進(jìn)行測試,可以驗(yàn)證上述算法的正確性。

```java

public static void main(String[] args) {

Solution solution new Solution();

String input "LEETCODEISHIRING";

int numRows 3;

String output (input, numRows);

(output);

}

```

經(jīng)過測試,控制臺輸出結(jié)果符合預(yù)期,證明算法實(shí)現(xiàn)正確。LeetCode上也有相關(guān)題目,歡迎進(jìn)一步挑戰(zhàn)和學(xué)習(xí)。

標(biāo)簽: