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

详见:https://leetcode.com/problems/zigzag-conversion/description/

解题思路:
1. 每一组 V 字形的长度为 size = 2 * line - 2 (斜向上的部分没有第一行和最后一样的元素),line 是行数
2. 对于垂直向下的一列元素来说,每一组向下的列之间间隔 size 大小,即一组元素的个数。
3. 对于斜向上的元素来说,它们的位置位于当前组 size - i(i 为该元素所在的行数,一组有 size 个字符,倒数第 i 个,位置为 size -i)。当前组的第一个字符所在位置为 j - i (j 为与斜向上的元素同在一行的,垂直向下的列的元素在字符串中的序号,i 为它们共同的行号)。
即:j-i就是zigzag的起始字符,然后我们是要倒数第i个,因为一个zigzag有size个字符,所以倒数第i个就是size-i,我们要赋值的字符就是(j-i)+(size-i)=j+size-2*i

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

最新文章

  1. Shell文件权限和脚本执行
  2. mysql 按时间段统计(年,季度,月,天,时)
  3. php+jquery+ajax实现用户名验证
  4. sql bcp 笔记
  5. Windows平台上安装搭建iPhone/iPad的开发环境
  6. Squid代理之透明代理
  7. 【LEETCODE OJ】Candy
  8. jquery.validate+jquery.form提交的三种方式
  9. TableView不显示没内容的Cell怎么办?
  10. asp.net cookie和session的详细使用
  11. linux杂记(十一)Bash Shell的使用环境
  12. 黑马程序员--&#160;C语言执行过程及注意点
  13. SCANF SCANF_S
  14. 2017人生总结(MECE分析法)
  15. 前端工程师:电信专业转前端是如何拿到阿里、腾讯offer的?
  16. 5.2基于JWT的令牌生成和定制「深入浅出ASP.NET Core系列」
  17. UNIX域协议之描述符传递
  18. git忽视修改的文件
  19. 解决Oracle死锁问题步骤
  20. Python compile() 函数

热门文章

  1. cloudera上面安装Spark2.0
  2. IntelliJ手记
  3. 07_ddms透视图介绍
  4. day18-事务与连接池 4.事务特性
  5. 第七篇 elasticsearch 链接mysql不会更新
  6. servlet与filter的加载顺序详解
  7. Umbraco back office 中templates显示不出来问题解决 (一片空白)
  8. PCC-S-02201, Encountered the symbol &quot;DB_USER_OPER_COUNT&quot;
  9. Access denied for user &#39;xxx&#39;@&#39;localhost&#39; 问题的解决方法
  10. Mathematics Base - 期望、方差、协方差、相关系数总结