1. 程式人生 > >ZigZag Conversion -- LeetCode

ZigZag Conversion -- LeetCode

                原題連結: http://oj.leetcode.com/problems/zigzag-conversion/
這道題是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();}
實現上要注意最後如果字元長度到了,就不需要添加了。 這道題也沒有什麼擴充套件,我覺得面試中考到的機率不大,基本就是字串的操作。