leetcode之ZigZag Conversion
2016-01-25 15:17
513 查看
题目:
The string
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
解答:
就是找规律,对第一行和最后一行进行特殊处理即可
class Solution {
public:
string convert(string s, int numRows) {
int len = s.length();
if(numRows == 1)
return s;
string res = "";
for(int i = 0;i < numRows; ++i)
{
int p = i;
bool choose = true;
if(i == numRows - 1)
choose = false;
while(p < len)
{
if(choose)
{
res += s[p];
p = p + (numRows - i - 1) * 2;
if(!(i == 0 || i == numRows - 1))
choose = !choose;
}
else
{
res += s[p];
p = p + i * 2;
if(!(i == 0 || i == numRows - 1))
choose = !choose;
}
}
}
return res;
}
};
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) {
int len = s.length();
if(numRows == 1)
return s;
string res = "";
for(int i = 0;i < numRows; ++i)
{
int p = i;
bool choose = true;
if(i == numRows - 1)
choose = false;
while(p < len)
{
if(choose)
{
res += s[p];
p = p + (numRows - i - 1) * 2;
if(!(i == 0 || i == numRows - 1))
choose = !choose;
}
else
{
res += s[p];
p = p + i * 2;
if(!(i == 0 || i == numRows - 1))
choose = !choose;
}
}
}
return res;
}
};
相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总