LeetCode6:ZigZag Conversion
来源:互联网 发布:阴上买入指标公式源码 编辑:程序博客网 时间:2024/05/29 14:51
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 NA P L S I I GY I RAnd 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"
.
一、题目描述
将给定的字符串,变成z字形排列,结果输出按行拼接的字符。例如字符串"PAYPALISHIRING"且nRows为3时,结果输出为:"PAHNAPLSIIGYIR"
二、解题思路
1.第0行和最后一行中,前一个下标的值和后一个下标的值相差 2 * nRows - 2 ;2.中间行中,前一个下标的值和后一个下标的值需要根据这个下标是该行中的奇数列还是偶数列来计算;奇数列,从这个下标到下一个下标相差的值是它们所处的行i下面的所有行的点的个数,即2 * (nRows - 1 - i);偶数列,从这个下标到下一个下标相差的值其实是它们所处的行i上面的所有行的点的个数,即2 * i。
#include<iostream>#include<algorithm>#include<string>using namespace std;class Solution {public:string convert(string s, int nRows) {// IMPORTANT: Please reset any member data you declared, as// the same Solution instance will be reused for each test case. if (nRows <= 1 || s.length() == 0)return s;string zigzagString = "";int len = s.length();for (int i = 0; i < len && i < nRows; ++i){int indx = i;zigzagString += s[indx];for (int k = 1; indx < len; ++k){//第一行或最后一行if (i == 0 || i == nRows - 1){indx += 2 * nRows - 2;}//中间行,判断奇偶else{if (k & 0x1) //奇数indx += 2 * (nRows - 1 - i);else indx += 2 * i;}//判断indx合法性if (indx < len){zigzagString += s[indx];}}}return zigzagString;}};int main(){string s1 = "PAYPALISHIRING";int n = 4;Solution solution1;string s2 = solution1.convert(s1, n);cout<<s2<< endl;system("pause");return 0;}
0 0
- LeetCode6:ZigZag Conversion
- leetcode6-ZigZag Conversion
- leetcode6 Zigzag Conversion
- [Java]leetcode6 ZigZag Conversion
- ZigZag Conversion leetcode6
- leetcode6 ZigZag Conversion
- LeetCode6:ZigZag Conversion
- LeetCode6. ZigZag Conversion
- leetcode6. ZigZag Conversion
- Leetcode6: ZigZag Conversion
- leetcode6. ZigZag Conversion
- leetcode6. ZigZag Conversion
- Leetcode6、ZigZag Conversion
- LeetCode6. ZigZag Conversion
- ZigZag Conversion(leetcode6)
- LeetCode6—ZigZag Conversion
- leetcode6. ZigZag Conversion
- LeetCode6——ZigZag Conversion
- 10月20日 html学习笔记(2)
- listview中如何将某一个item显示成其它的样式
- 爱与失落
- 48. PHP 页面静态化(1)
- LeetCode292——Nim Game(一行代码解决)
- LeetCode6:ZigZag Conversion
- [深入理解Java虚拟机]第六章 无关性的基石
- VS2012 如何建立第一个C#控制台应用
- leetcode 2 Add Two Numbers
- D3D自学笔记(山峰与水波)
- shell 学习笔记 (二)
- 素数的个数统计
- lLinux操作系统中模块操作相关命令解释
- DDL语句、DML语句、TCL语句