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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 6. ZigZag Conversion

發布時間:2025/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 6. ZigZag Conversion 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原題鏈接在這里:https://leetcode.com/problems/zigzag-conversion/

題目:

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"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);

convert("PAYPALISHIRING", 3)?should return?"PAHNAPLSIIGYIR".

題解:

e.g. 若是給出0,1,2,3.....11. numRow = 4

0   ?  6

1  5  7  11

2  4  8  10

3  ?  ?9

發現第一行和最后一行 每兩位之間差了interval = 2*(numRow-1). 中間行每兩位之間交替差了interval - 2*i, 2*i(i 為行數,從0開始).

采用方法是每隔interval都加上一位,然后判斷當前若不是第一行和最后一行就再在加完的數位后再加一個s.charAt(j+interval-2*i).

外層loop的 i 是行數, 內層loop的 j 是string要加位置的index.

Note:numRows == 1的情況要單獨拿出來討論。若是numRows == 1時, interval = 0, 進入內層循環,j+=interval 就不會動是infinite loop.

Time Complexity: O(s.length()), 外層循環用了numRows, 內層循環用了s.length()/numRows, 所以用了 numRows * (s.length()/numRows) = s.length().

Space: O(s.length()), StringBuilder 的大小.

AC Java:

1 public class Solution { 2 public String convert(String s, int numRows) { 3 if(s == null || s.length() == 0){ 4 return s; 5 } 6 if(numRows == 1){ 7 return s; 8 } 9 StringBuilder sb = new StringBuilder(); 10 int interval = 2*numRows-2; 11 for(int i = 0; i<numRows; i++){ 12 for(int j = i; j<s.length(); j+=interval){ 13 sb.append(s.charAt(j)); 14 if(i != 0 && i != numRows-1 && j+interval-2*i < s.length()){ 15 sb.append(s.charAt(j + interval - 2*i)); 16 } 17 } 18 } 19 return sb.toString(); 20 } 21 }

?

轉載于:https://www.cnblogs.com/Dylan-Java-NYC/p/4824934.html

總結

以上是生活随笔為你收集整理的LeetCode 6. ZigZag Conversion的全部內容,希望文章能夠幫你解決所遇到的問題。

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