zoukankan      html  css  js  c++  java
  • 6. ZigZag Conversion(C++)

    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".

    答案:

    class Solution {
    public:
      string convert(string s, int numRows) {
        if(numRows==1)
          return s;
        string str;
        int loop = 1 + s.size()/(2*numRows-2);
        for(int j=0;j<numRows;j++){
          for(int t=0;t<loop;t++){
            int tmp = j+2*(numRows-1)*t;
            if(j==0 || j==(numRows-1)){
              if(tmp<s.size()){
                str+=s[tmp];
              }
            }else{
              int tmp1 = tmp+2*(numRows-1-j);
              if(tmp<s.size()){
                str+=s[tmp];
              }
              if(tmp1<s.size()){
                str+=s[tmp1];
              }
            }
          }
        }
        return str;
      }
    };

    更好的方法:

    class Solution {
    public:
      string convert(string s, int numRows) {
        if (numRows <= 1)
          return s;

        const int len = (int)s.length();
        string *str = new string[numRows];

        int row = 0, step = 1;
        for (int i = 0; i < len; ++i)
        {
          str[row].push_back(s[i]);

          if (row == 0)
            step = 1;
          else if (row == numRows - 1)
            step = -1;

          row += step;
        }

        s.clear();
        for (int j = 0; j < numRows; ++j)
        {
          s.append(str[j]);
        }

        delete[] str;
        return s;
       }
    };

  • 相关阅读:
    微软经典面试笔试题
    Websense一面、二面及Offer
    微软2014年技术岗位在线笔试题
    2013年微软面试经历 – 终究离他们的要求还是有一定距离
    Mesos:数据库使用的持久化卷
    Mesos和Docker的集成
    可扩展架构取舍
    组织架构适配下的敏捷开发
    TensorFlow与主流深度学习框架对比
    Pokémon Go呼应设计:让全世界玩家疯狂沉迷
  • 原文地址:https://www.cnblogs.com/devin-guwz/p/6480266.html
Copyright © 2011-2022 走看看