红桃J

用心写好每行完美的代码,远比写一堆更有价值

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

PS:边界条件判断不需要计算,用来比较判断就可以了。哎呀,自己还是太嫩啊,老是忘了比较这一招!!!!

代码:

 1 #include<iostream>
 2 #include<string>
 3 
 4 using namespace std;
 5 
 6 string convert(string s, int nRows)
 7 {
 8     if (nRows == 1)
 9         return s;
10     int L = s.length();
11     string result="";
12     for (int i = 0; i < nRows; i++)
13     {
14         if (i == 0||i==nRows-1)
15         {
16             int t = i;
17             while (t < L)
18             {
19                 result.append(1,s[t]);
20                 t = t + 2 * nRows - 2;
21             }
22         }
23         else
24         {
25             int t = i;
26             while (t<L)
27             {
28                 result.append(1, s[t]);
29                 int m = t + 2 * nRows - 2 - 2*i;
30                 if (m < L)
31                 {
32                     result.append(1,s[m]);
33                     t = t + 2 * nRows - 2;
34                 }
35                 else
36                     break;
37             }
38         }
39     }
40     return result;
41 }
42 
43 int main()
44 {
45     cout << convert("ABCDE", 4) << endl;
46 }

 

posted on 2015-03-07 23:40  红桃J  阅读(143)  评论(0编辑  收藏  举报