大数据之蛇形矩阵
题目描述
给定一个字符串,和一个整数n,将它排列成一个n行的蛇形返回。
示例
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 s, int numRows);
Example 1:
Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Example 2:
Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:
P I N
A L S I G
Y A H R
P I
给定字符串和蛇形排列占据的行数,要求返回重新排列后的串
题目解析
这道题是一道模拟题,题目的要求就是答案,我们只需要读懂题意就很容易实现。
我们最终要输出的是以蛇形摆放之后的字符串再按行串联在一起之后的结果,也就是说每一个字母摆放的列并不重要,重要的是摆放的行号。我们可以很容易想到通过数组维护每一行当中摆放的字母,最后将每一行的结果串联即可。所以问题就只剩下了,我们如何知道每一个字母应该摆放在哪一行?
其实这也是有规律的,我们通过观察样例可以发现,我们每一个字母摆放的行号先是从0递增到n-1.再从n-1递减到0.我们就模拟这个过程,一个字符一个字符的放置即可。
比如字符串是“PAYPALISHIRING ”,rowNum=4.我们可以创建四个空串:
“” “” “” “”
然后我们按照蛇形一个字母一个字母地放进这些空串当中:
当放了第一个字母p之后,变成:
“p” “” “” “”
接着放第二个:
“p” “a” “” “”
接着第三个:
“p” “a” “y” “”
当我们把所有字母都放完了之后,可以得到这样的四个串:
“PIN” “ALSIG” “YAHR” “PI”
然后把这四串拼接在一起就行了。
代码实现
class Solution:
def convert(self, s: str, numRows: int) -> str:
# 记录每一行摆放的字母
rows = ['' for _ in range(numRows)]
# 记录当前行号
cur_row = 0
# 记录当前摆放顺序是否从上往下, False代表从下往上
forward = True
# numRows = 1直接返回
if numRows == 1:
return s
for i, c in enumerate(s):
rows[cur_row] += c
# 根据顺序变更行号
if forward:
cur_row += 1
else:
cur_row -= 1
# 根据行号和当前顺序判断需不需要转向
if cur_row == numRows - 1 and forward:
forward = False
if cur_row == 0 and not forward:
forward = True
ret = ''
for sc in rows:
ret += sc
return ret

相关推荐HOT
更多>>
大数据之蛇形矩阵
我们最终要输出的是以蛇形摆放之后的字符串再按行串联在一起之后的结果,也就是说每一个字母摆放的列并不重要,重要的是摆放的行号。我们可以很...详情>>
2022-12-07 20:58:39
大数据之两数相加
大数据通常包含的数据集的大小超出了常用软件工具在可容忍的经过时间内捕获、整理、管理和处理数据的能力。大数据哲学包含非结构化,半结构化和...详情>>
2022-12-07 20:56:39
设计一个实时的流式计算Wordcount
使用Kafka对接SparkStreaming计算,那么要保证数据不丢失,和不重复的话,要使用直连方式,并且保证一次性语义,手动管理Offset即可,那么在实...详情>>
2022-12-07 20:54:49
大数据之最长回文串
大数据通常包含的数据集的大小超出了常用软件工具在可容忍的经过时间内捕获、整理、管理和处理数据的能力。大数据哲学包含非结构化,半结构化和...详情>>
2022-12-07 20:51:53
两两交换链表中的节点
大数据通常包含的数据集的大小超出了常用软件工具在可容忍的经过时间内捕获、整理、管理和处理数据的能力。大数据哲学包含非结构化,半结构化和...详情>>
2022-12-07 20:46:54大数据培训问答更多>>
新大数据都学什么?5大核心知识必学内容有哪些
新大数据报班多少钱?如何选择培训机构
新人工智能学什么?自学可以成才吗
新数据处理包括哪些内容?是不是所有课程需要分别报课
新大数据分析需要学什么?怎么学比较好
新人工智能专业学什么?人工智能有哪些课程
新大数据数据分析师要学什么?好就业吗
大数据面试题库 更多>>
大数据的五个V是什么?
数据及集群管理(三)
数据及集群管理(二)
数据及集群管理(一)
大数据之hbase的优化读数据方面
大数据之hbase的优化写入数据方面
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区
