LeetCode OJ 06 ZigZag Conversions
2015-08-27 08:13
260 查看
题目难度:easy
The string
of rows like this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line:
Write the code that will take a string and make this conversion given a number of rows:
return
思路: 刚入手题目的时候可能会不太理解题目的内容。ZigZag pattern的意思就是假设原字符串为01234556789。当row为3时,该字符串中元素的放置样式如图1所示;当row为4时,该字符串中元素的放置样式如图2所示。
输出的字符串顺序就是将这样放置的元素横向输出出来。
通过数学规律发现:第一行和最后一行两个元素的坐标差值为2*numRows-2
中间行差值为2*numRows-2的两个元素之间会多加一个元素,而这个元素坐标与前元素坐标差值为j+2*numRows-2-2*i (其中j为前元素坐标而i为行数)
代码如下:
性能分析:
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".
思路: 刚入手题目的时候可能会不太理解题目的内容。ZigZag pattern的意思就是假设原字符串为01234556789。当row为3时,该字符串中元素的放置样式如图1所示;当row为4时,该字符串中元素的放置样式如图2所示。
输出的字符串顺序就是将这样放置的元素横向输出出来。
通过数学规律发现:第一行和最后一行两个元素的坐标差值为2*numRows-2
中间行差值为2*numRows-2的两个元素之间会多加一个元素,而这个元素坐标与前元素坐标差值为j+2*numRows-2-2*i (其中j为前元素坐标而i为行数)
代码如下:
class Solution { public: string convert(string s, int numRows) { string output=""; int zigPan = 2*numRows-2; int len = s.length(); if(len<=2||numRows<2||len<numRows) return s; for(int i=0;i<numRows;i++) { for(int j=i;j+numRows<len;j+=(zigPan+1)) { output.push_back(s[j]); if(i!=0&&i!=(numRows-1)&&(j+2*numRows-2-2*i)<len) { output.push_back(s[j+2*numRows-2-2*i]); } } } return output; } };
性能分析:
相关文章推荐
- Win10补丁神神秘秘不提供更新内容 N多用户抓狂
- 算法 链表相邻元素翻转
- 程序员和工程师有什么不一样?
- 堆栈的基本特征和基本操作
- fffffffffff
- HDU 3749 Financial Crisis
- WP8.1/Win10/Windows10 PC平台提供密码管理《Enpass》限时免费下载
- 中小站长网站建设发展需注意的的六点ccxtqj
- 我知道点redis-单机数据库(RDB持久化)
- 数据结构的概念和分类
- 展望(开篇)
- 【spoj104】highways
- 用好Python帮助函数help(),dir(),type()
- 使用int?来确保值类型也可以为null
- 第22/24周 等待和I/O延迟统计
- 微软发布《Win10快捷键大全》:Win10桌面版快捷键功能介绍以及官方文档下载
- spring 中的 factory-method 属性
- 《Win10快捷键大全》官方文档下载
- Syntax error, type annotations are available only when source level is at least 1.8
- install ftp client on kail