Leetcode 6 Z字形變換 java 9ms 擊敗95%

將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行 Z 字形排列。

比如輸入字符串為 "LEETCODEISHIRING" 行數(shù)為 3 時(shí),排列如下:

L   C   I   R
E T O E S I I G
E   D   H   N

之后,你的輸出需要從左往右逐行讀取,產(chǎn)生出一個(gè)新的字符串,比如:"LCIRETOESIIGEDHN"。

請(qǐng)你實(shí)現(xiàn)這個(gè)將字符串進(jìn)行指定行數(shù)變換的函數(shù):

string convert(string s, int numRows);
示例 1:

輸入: s = "LEETCODEISHIRING", numRows = 3
輸出: "LCIRETOESIIGEDHN"
示例 2:

輸入: s = "LEETCODEISHIRING", numRows = 4
輸出: "LDREOEIIECIHNTSG"
解釋:

L     D     R
E   O E   I I
E C   I H   N
T     S     G
//jump 是一次循環(huán)的長(zhǎng)度 如4行為6 2n-2
//alias 是每個(gè)循環(huán)中離開始位置的偏移量

//之前一交代碼 發(fā)現(xiàn)效率賊低 把ret從String改為StringBuilder效率就高了
class Solution {
    StringBuilder ret = new StringBuilder();
    public String convert(String s, int numRows) {
        if(numRows == 1)
            return s;
       int jump = 2*numRows -2;
        int len = s.length();
        for(int alias=0;alias<numRows;alias++){
            if(alias == 0 || alias == jump/2){
                for(int i =0+alias;i<len;i+=jump)
                    ret.append(s.charAt(i));
             }
            else{
                for(int i =0+alias;i<len;i+=jump){
                    ret.append(s.charAt(i));
                    if(i+jump-2*alias<len)
                        ret.append(s.charAt(i+jump-2*alias));
                    }
                }
            }
        return ret.toString();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目:6. Z字形變換 難度:中等 分類:字符串 解決方案:字符串遍歷 今天我們學(xué)習(xí)第6題Z字形變換,這是一個(gè)字符...
    編程半島閱讀 565評(píng)論 0 1
  • 題目描述: 將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行 Z 字形排列。比如輸入字符串為 "LEETC...
    LeeYunFeng閱讀 993評(píng)論 0 50
  • 題目 將一個(gè)給定字符串根據(jù)給定的行數(shù),以從上往下、從左到右進(jìn)行 Z 字形排列。 比如輸入字符串為 "LEETCOD...
    LonnieQ閱讀 190評(píng)論 0 1
  • 今天跟朋友聊天,談到去年體檢的事情,最后她來了句“現(xiàn)在日子這么好過,如果身體不好那就虧了”,共鳴有沒有! 還記得年...
    Tony恒閱讀 217評(píng)論 0 0
  • 本文為轉(zhuǎn)發(fā),原文地址 golang 的fmt 包實(shí)現(xiàn)了格式化I/O函數(shù),類似于C的 printf 和 scanf。...
    動(dòng)物園園長(zhǎng)熊熊醬閱讀 4,306評(píng)論 0 2

友情鏈接更多精彩內(nèi)容