6. ZigZag Conversion
----------------------------------------------------------------------------
Mean:
给你一个字符串,让你将其按照倒‘之’字型排列,然后输出排列后的顺序.
analyse:
简单的推公式,算出随行递增,间隔的变化.(第一行和最后一行特判一下)
Time complexity: O(N)
view code
/** * ----------------------------------------------------------------- * Copyright (c) 2016 crazyacking.All rights reserved. * ----------------------------------------------------------------- * Author: crazyacking * Date : 2016-02-15-15.00 */ #include <queue> #include <cstdio> #include <set> #include <string> #include <stack> #include <cmath> #include <climits> #include <map> #include <cstdlib> #include <iostream> #include <vector> #include <algorithm> #include <cstring> using namespace std; typedef long long( LL); typedef unsigned long long( ULL); const double eps( 1e-8); class Solution { public : string convert( string s , int nRows) { if( nRows <= 1 || s . length() < 3 || s . length() <= nRows) return s; string s2; int zigSpan = nRows * 2 - 2; for ( int i = 0; i < nRows; i ++) { for ( int j = i; j < s . length(); j += zigSpan) { s2 . push_back(s [ j ]); if ( i != 0 && i != nRows - 1 && zigSpan + j - 2 * i <s . length()) s2 . push_back(s [ zigSpan + j - 2 * i ]); } } return s2; } }; int main() { return 0; }