ZigZag Conversion -- LeetCode
阿新 • • 發佈:2018-12-22
原題連結: http://oj.leetcode.com/problems/zigzag-conversion/
這道題是cc150裡面的題目了,其實比較簡單,只要看出來他其實每個zigzag是2*m-2個字元就可以,這裡m是結果的行的數量。接下來就是對於每一行先把往下走的那一列的字元加進去,然後有往上走的字元再加進去即可。時間複雜度是O(n),空間複雜度是O(1),程式碼如下:
這道題是cc150裡面的題目了,其實比較簡單,只要看出來他其實每個zigzag是2*m-2個字元就可以,這裡m是結果的行的數量。接下來就是對於每一行先把往下走的那一列的字元加進去,然後有往上走的字元再加進去即可。時間複雜度是O(n),空間複雜度是O(1),程式碼如下:
public String convert(String s, int nRows) { if(s == null || s.length()==0 || nRows <=0) return ""; if (nRows == 1) return s; StringBuilder res = new StringBuilder(); int size = 2*nRows-2; for(int i=0;i<nRows;i++) { for(int j=i;j<s.length();j+=size) { res.append(s.charAt(j)); if(i!=0 && i!=nRows-1 && j+size-2*i<s.length()) res.append(s.charAt(j+size-2 *i)); } } return res.toString();}
實現上要注意最後如果字元長度到了,就不需要添加了。 這道題也沒有什麼擴充套件,我覺得面試中考到的機率不大,基本就是字串的操作。