zoukankan      html  css  js  c++  java
  • [算法练习]ZigZag Conversion

    题目说明:

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

    P   A   H   N
    A P L S I I G
    Y   I   R
    And then read line by line: "PAHNAPLSIIGYIR"

    Write the code that will take a string and make this conversion given a number of rows:

    string convert(string text, int nRows);

    convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

    程序代码:

    #include <gtest/gtest.h>
    using namespace std;
    
    string convert(string s, int numRows)
    {
        if (s.empty() || (numRows < 2))
        {
            return s;
        }
    
        string result;
        int length = s.length();
        char* data = new char[length*numRows];
        memset(data,0,length * numRows);
    
        int delta = 0;
        int offset = 0;
        int flag = 1;
    
        for (int i= 0; i<length; ++i)
        {
            data[offset + delta * length] = s[i];        
            if ( (delta+flag) >= numRows)
            {
                flag = -1;
            }
            else if ((delta+flag) < 0)
            {
                flag = 1;
            }
            delta += flag;
    
            if (flag == -1)
            {
                offset ++;
            }
        }
    
        for (int i=0; i<numRows; ++i)
        {
            for (int j=0; j < length; ++j)
            {
                if (data[j+i*length])
                    result += data[j+i*length];
            }
        }
    
        delete data;
    
        return result;
    }
    
    TEST(Pratices, tZigZagConversion)
    {
        // ''=> ''
        // ABCDEFG 3 => A   E  => AEBDFCG
        //              B D F 
        //              C   G
    
        ASSERT_EQ(convert("",1),"");
        ASSERT_EQ(convert("ABCDEFG",1),"ABCDEFG");
    }
  • 相关阅读:
    资源 | 辟谣平台
    数据分析常用思维
    数据分析常用工具
    杂谈 | 标准化和个性化
    杂谈 | 学以致用
    杂谈 | 工具思维的陷阱
    杂谈 | 习得性无助&习得性乐观
    spark连接mysql
    spark累加器
    java操作excel数据写入map集合并按照value排序
  • 原文地址:https://www.cnblogs.com/Quincy/p/5289848.html
Copyright © 2011-2022 走看看