Submission Details

  我是把它看作是“W”型字,并且“V”作为一个处理循环

   提交后错了两次:第一次内存预设不够大100变为1000

                         第二次没考虑边界情况,当输出行为1时,可以不用处理直接输出

 1 class Solution {
 2 public:
 3     string convert(string s, int numRows) {
 4       char ischar[1000][1000]={0};
 5       int cer_i=0;
 6       int col=0,i=0;
 7       string change;
 8       if(numRows==1) return s;
 9       while(i<s.length())
10           {
11            
12           while(cer_i<numRows && i<s.length())
13               ischar[cer_i++][col]=s[i++];
14            cer_i=cer_i-2;
15           while(cer_i>0 && i<s.length()) 
16               ischar[cer_i--][++col]=s[i++];
17           col++;
18           if(i>=s.length()) break;
19           } 
20       for(int m=0;m<numRows;m++)
21           for(int n=0;n<col;n++)
22               {
23                if(ischar[m][n] !=0) change=change+ischar[m][n]; 
24               }
25       return change;
26     }
27 };

124ms,是比较慢的

优化的话:可以把二维字符数组改为一维字符串数组,这样最后不用在循环重新获取一边。

原文地址:https://www.cnblogs.com/daocaorenblog/p/5209562.html