zoukankan      html  css  js  c++  java
  • LeetCode.6

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

      题意:就是给出层数,然后按锯齿形正弦波保存字符串。。。类似给数据加密。

      这个题我个人觉得挺有意思的,但没能解决。。。看了别人的题解,有一个让我很喜欢的,算法真的是太棒了。。

      代码十分简洁易懂,第9行的细节处理真的是太精彩了:

    class Solution {
    public:
        string convert(string s, int numRows) {
            string res="";
            if(numRows==1) return s;
            for(int i=0; i < numRows; i++){
                for(int j=0, k=i; k < s.size(); j++){
                    res += s[k];
                    k += ((i==0 || (j%2==0)) && (i!= numRows-1) ) ? 2*(numRows-i-1) : 2*i;
                }
            }
            return res;
        }
    };
    

      题目来源:ZigZag Conversion

      代码来源:Solution

  • 相关阅读:
    ActiveMQ学习第八篇:Consumer
    ActiveMQ学习第七篇:Messaage
    线性判别分析LDA
    逻辑回归
    那些年,曾踩过的Spark坑
    HBase表创建、删除、清空
    python的多线程
    python的多进程
    python实现读写txt文件
    python的封包和解包
  • 原文地址:https://www.cnblogs.com/darkchii/p/8137419.html
Copyright © 2011-2022 走看看