第八周作业2(LeetCode6)
来源:互联网 发布:tripmode mac 编辑:程序博客网 时间:2024/05/29 16:49
1. 题目描述
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”.
2. 解决思路
这道题的关键是推算“之“字形的空格打印公式,具体代码如下。
3. 完整代码
#include <iostream>#include <string>using namespace std;void printZigzag(const string &s, int nRows){ if (s.empty() || nRows < 1) return; if (nRows == 1) { cout << s << endl; return; } int zigSpan = nRows * 2 - 2; int zig = nRows - 2; for (int i = 0; i < nRows; i++) { for (int j = i; j < s.length(); j+=zigSpan) { cout << s[j]; //注意:推导出zigSpan+j-2i的数学公式一点都不能错 if (i != 0 && i != nRows - 1 && zigSpan+j-2*i<s.length()) { for (int r1 = 0; r1 < zig - i; r1++) { cout << " "; } cout << s[zigSpan + j - 2 * i]; for (int r2 = 0; r2 < i-1; r2++) { cout << " "; } } else { for (int r = 0; r < zig; r++) { cout << " "; } } } cout << endl; }}int main(){ string str1; printf("请输入任意字符串:\n"); cin >> str1; int nRows; printf("请输入列数:\n"); cin >> nRows; printZigzag(str1, nRows); system("pause"); return 0;}
0 0
- 第八周作业2(LeetCode6)
- 第八周--作业要求
- 第八周作业
- 第八周作业
- 第八周作业1
- 第八周作业 1.1
- 第八周作业 1.3
- 第八周作业 2.0
- 第八周作业 3.0
- 第八周作业-1
- 第八周C++作业
- 第八周作业
- 第八周作业
- 第八周作业
- 第七第八周作业
- 第八周作业
- 第八周作业
- 第八周作业报告
- vue音乐播放器插件vue-aplayer的配置及其使用
- A1052.Linked List Sorting
- 如何用clang analyzer定制静态分析规则(2)创建定制规则库篇
- Zedboard---实验六秒计数
- Linux可加载内核模块(LKM)
- 第八周作业2(LeetCode6)
- 97.二叉树的最大深度
- 绝对地址与相对地址
- stm32标准库文件下载
- PHP版单点登陆实现方案
- 去除UITableView自带分隔线
- 康拓逆展开
- Python正则表达式指南
- js几种常见排序的实现