[LeetCode] ZigZag Conversion
来源:互联网 发布:双界面软件手机 编辑:程序博客网 时间:2024/05/21 10:10
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)
01234560P A H N1APLSIIG2Y I RP A H NAPLSIIGY 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"
Idea: 通过找规律,可以知道一个zigzag 有 2 * nRows -2 个元素。
先放第一排和最后一排的元素。
在放之字形中间的元素
class Solution {public: string convert(string s, int nRows) { int size = s.size(); if(size <= 1 || nRows <= 1 || size <= nRows) return s; string result ; int k = 0, zigzag = 2 *nRows - 2, //one zigzag element count count = size/zigzag + 1; //how many zigzag for(int i = 0; i < nRows; i++) { for(int j = i; j < size; j+=zigzag) { result.append(1, s[j]); // first and last if(i != 0 && i!= nRows -1 && j + zigzag - 2 *i < size) { result.append(1, s[j + zigzag - 2 * i]); } } } return result; }};
Idea: 将一维数组string[size] 转为二维数组result[nRows][ ], 然后按照行输出。
--------------------------------Memory Limit Exceeded------------------------------------------
class Solution {public: string convert(string s, int nRows) { int size = s.size(); if(size <= 1 || nRows <= 1 || size <= nRows) return s; int **p = new int* [nRows]; int nCols = (size/(2*nRows - 2) + 1)*(nRows -1); for(int i = 0; i < nRows; i++) { p[i] = new int [nCols]; } int k = 0, row = nRows - 1; for(int j = 0; j < nCols; j++) { for(int i = 0; i < nRows; i++) { if(!(j % row) && k < size) { p[i][j] = s[k++]; } else if(!(i + j % row) && k < size) { p[i][j] = s[k++]; } else { p[i][j] = ','; } } } k = 0; for(int i = 0; i < nRows; i++) { for(int j = 0; j < nCols; j++) { if(p[i][j] != ',') { s[k++] = p[i][j]; } } } for(int i = 0; i < nRows; i++) { delete [] p[i]; } delete [] p; return s; }};
0 0
- LeetCode: ZigZag Conversion
- LeetCode : ZigZag Conversion
- leetcode 13:zigzag conversion
- [LeetCode] Zigzag Conversion
- LeetCode 6 - ZigZag Conversion
- Leetcode : ZigZag Conversion
- 【leetcode】Zigzag Conversion
- [LeetCode]ZigZag Conversion
- leetcode ZigZag Conversion
- LeetCode-ZigZag Conversion
- LeetCode ZigZag Conversion
- LeetCode 6: ZigZag Conversion
- leetcode-006:ZigZag Conversion
- Leetcode: ZigZag Conversion
- [LeetCode]ZigZag Conversion
- [LeetCode] ZigZag Conversion
- [LeetCode]ZigZag Conversion
- leetcode: ZigZag Conversion
- SolrCloud源码环境搭建 - Solr
- 今日教训 jsp向action传值类型不一致 会报classNotFound
- UIEvent简介
- MyEclipse不能自动编译解决办法总结
- Angular+Node+MongoDB
- [LeetCode] ZigZag Conversion
- PowerDesigner中PDM导出的SQL语句
- 关于抱怨
- JAVA程序设计(18.1)----- 1多线程轮流打印 线程调度 线程池 synchronized wait notify 内部类
- 【翻译】Intel要回答的5个问题
- 如何让自己静下来
- 接下来的计划目标是什么呢?
- 【数据结构+线段树】连续型/离散型线段树
- 的撒打算;打卡上;打卡上;打开;阿什利看到;拉SD卡