leetcode 6 Z字形變換

2021-08-29 13:54:14 字數 661 閱讀 3183

觀察本題可以找到規律,每次對s的2*numrows-2個字母進行操作,比如3行時,每四個字母為乙個迴圈,4行時每6個字母為乙個迴圈。對於每次迴圈的前numrows個字母,用該字母的下標i%2*numrows 結果為當前字母所在的行。而對於每次迴圈的後numrows-2個字母,numrows-i%2*numrows為當前字母所在的行。

以numrows舉例,每6個字母為乙個迴圈,就拿前6個字母舉例,前四個字母分別在0,1,2,3行,而對於第5個字母,下標為4,6-4%6=2,所以在下標為2的行,第6個字母,下標為5,同理,在下標為1的行

std::string convert(std::string s, int numrows) 

for(int i=0;i

}for(int j=numrows;j}}

char c[s.size()];

int i=0;

for(int j=0;j

}std::string str=c;//char陣列轉為字串

return str.substr(0,s.size());//char轉字串會多出乙個『\0』,所以要擷取

}

LeetCode 6 Z字形變換

將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r之後從左往右,逐行讀取字元 pahnaplsiigyir 實現乙個將字串進行指定行數變換的函式 string convert string s,int numrows 輸入 s pa...

leetcode 6 Z字形變換

將字串 paypalishiring 以z字形排列成給定的行數 p a h n a p l s i i g y i r之後從左往右,逐行讀取字元 pahnaplsiigyir 實現乙個將字串進行指定行數變換的函式 string convert string s,int numrows 示例 1 輸入...

LeetCode 6 Z字形變換

把整個問題拆解為 儲存 取 的兩個過程 通過觀察我發現的是,當numrows為3時,兩列之間的數字的數目為1 當numrows為4時,兩列之間的數字的數目為2,以此類推。那麼,可不可以將每一列都存起來 col 兩列之間的數字也存起來 gap 最後要輸出時再通過遍歷的方式拼接出結果呢?以題目中給的字串...