LeetCode题解-6. ZigZag Conversion
链接
题目地址 https://leetcode.com/problems/zigzag-conversion/
github解题 https://github.com/gatieme/LeetCode/tree/master/006-ZigZagConversion
CSDN题解:http://blog.csdn.net/gatieme/article/details/50889937
题目描述
字符串“PAYPALISHIRING”
通过一个给定的行数写成如下这种Z型模式:
P A H N
A P L S I I G
Y I R
然后一行一行的读取:“PAHNAPLSIIGYIR”
写代码读入一个字符串并通过给定的行数做这个转换:
string convert(string text, int nRows);
调用convert("PAYPALISHIRING", 3)
,应该返回"PAHNAPLSIIGYIR"
。
思路
zigzag
的意思是”之”字形,zigzag conversion
也就是按"N"
字母的样子来重新安排字符串中字符的位置,并合并成一个新的字符串。
nRows则表示
“N”的高度,也就是每一竖列有
nRows`个字符。
我采用的是一个比较简单的方法,创建nRows
个string
,并将老字符串中字符依次写入新string
中,写完之后将nRows
个string
合并成一个,问题就解决了。算法的复杂度为O(n)
。
Zigzag:即循环对角线结构(
参考 http://www.cnblogs.com/sanghai/p/3632528.html
题没什么意思,就是纯粹的找规律
发现所有行的重复周期都是 2 * nRows - 2
对于首行和末行之间的行,还会额外重复一次,重复的这一次距离本周期起始字符的距离是 2 * nRows - 2 - 2 * i
#include <iostream>
#include <string>/*
创建nRows个char数组,将s按照0,1,2,...,nRows-2,nRows-1,nRows-2,...,2,1,0的顺序,将s中每个字符装入数组。具体来说,数组下标先递增,直到nRows-1,则反向,直到0,再反向,……直到s字符全部装入各数组再依次输出0~nRows-1个数组。
*/class Solution {
public:std::string convert(std::string s, int nRows){// Start typing your C/C++ solution below// DO NOT write int main() functionstd::string result;if (nRows < 2) return s;for (int i = 0;i < nRows; ++i){for (int j = i; j < s.length(); j += 2 * (nRows - 1)){result.push_back(s[j]);if (i > 0 && i < nRows - 1){if (j + 2 * (nRows - i - 1) < s.length()){result.push_back(s[j + 2 * (nRows - i - 1)]);}}}}return result;}
};int main(void)
{Solution solu;std::cout <<solu.convert("PAYPALISHIRING", 3) <<std::endl;return 0;
}
LeetCode题解-6. ZigZag Conversion相关推荐
- 【LeetCode】6. ZigZag Conversion Z 字形变换
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:字形变换,ZigZag,题解,Leetcode, 力扣,P ...
- [LeetCode题解] ZigZag Conversion
原文在这,可以来我blog翻翻哦. 第二天.今天AC掉了一道之前没AC掉的题目... 今天的题目是6. ZigZag Conversion 题目描述: The string "PAYPALI ...
- leetCode 6. ZigZag Conversion 字符串 (上传费劲)
6. ZigZag Conversion 题目:https://leetcode.com/problems/zigzag-conversion/ 1 2 3 4 5 6 7 8 9 10 11 12 ...
- [勇者闯LeetCode] 6. ZigZag Conversion
[勇者闯LeetCode] 6. ZigZag Conversion Description The string "PAYPALISHIRING" is written in a ...
- [LeetCode]ZigZag Conversion
题目:ZigZag Conversion 一串字符按照Z字形的数组给了我们,要求转成原本的顺序. 思路: 统计"|/"的个数: 竖着的和斜着的下标有对应关系: 竖着的:k = j* ...
- 【LeetCode题解】二叉树的遍历
我准备开始一个新系列[LeetCode题解],用来记录刷题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点--左孩 ...
- 900 多道 LeetCode 题解,这个 GitHub 项目值得 Star!
转自 | 码农有道 大家好,我是小 G. 周末风和日丽,适合刷 LeetCode 今天给你们推荐个 GitHub 项目,里面收集了 900 多道 LeetCode 题解,并包含中英文两个版本,适合大多 ...
- ZigZag Conversion
ZigZag Conversion 1. Question 给定行数,将某字符串转换为zigzag形式,然后按行输出.zigzag形式如: The string "PAYPALISHIRIN ...
- PHP版Leetcode题解开始随缘更新
2019独角兽企业重金招聘Python工程师标准>>> PHP版Leetcode题解 我叫skys215,是一名bug工程师. 我接触编程的时间比较早,但是因为我数学不好加上比较懒, ...
- [LeetCode 题解]: Binary Tree Preorder Traversal
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...
最新文章
- 定位的准确度与精度指标定义——RMS,CEP,Sigma
- 前端学Markdown
- 「万字图文」史上最姨母级Java继承详解
- 一周学习总结PPT-学会VLOOKUP函数,1分钟搞定数据汇总
- Spring aop面向切面编程概述
- 在ubuntu 16.04里使用python—scrapy将爬取到的数据存到mysql数据库中的一些随笔
- COSCon'18 面向全宇宙招募志愿者啦!
- Android之屏幕旋转之后当前activity被finish了依然被拉起来
- [html] 说说base标签有什么作用?
- php quick,Gitee 极速下载
- 直面 Jira,Worktile CTO 为何自信满满?
- 如何在MySQL中缩小/清除ibdata1文件
- Python NumPy教程
- 算法学习之路|程序运行时间
- python中func函数_Python 函数(func)学习
- keil5工程函数无法跳转到函数定义解决方法
- 修改过----AtCoder Beginner Contest 190 D	Staircase Sequences(唯一分解求因子数)
- 帆软bi 观远bi_与电源bi一起加入
- python重新安装ssl_python3安装文件遇到ssl未安装问题
- 要只看每日减少的新增数量,别忘了疫情最开始的时候可能也只有几个人患病
热门文章
- Data Collection and Storage We noticed that your app requests the user’s consent to access the ....
- php 设置针式打印机纸张,针式打印机设置方法 针式打印机打印连续纸设置技巧【图文】...
- Foxmail添加163邮箱账号的方法
- 概率论的学习和整理10:古典概型 和 二项分布(N重伯努利试验)
- 天地图key的申请步骤
- 大芒果单机修改服务器名字,大芒果服务器怎么创建GM账号?
- Latex 箭头、下标、符号上下写文字、正方形和三角形
- WMS 常用中英文对照
- Java之native函数
- Android系统模拟位置的使用方法