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 }