哪个网站可以做教师招聘题目,wordpress蜜蜂采集,宁波seo营销平台,设计广告图用什么软件好用LeetCode 6. Z 字形变换 将一个给定字符串 s 根据给定的行数 numRows #xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时#xff0c;排列如下#xff1a; 之后#xff0c;你的输出需要从左往右逐行读取#xff0c;产生…LeetCode 6. Z 字形变换 将一个给定字符串 s 根据给定的行数 numRows 以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时排列如下 之后你的输出需要从左往右逐行读取产生出一个新的字符串比如“PAHNAPLSIIGYIR”。 请你实现这个将字符串进行指定行数变换的函数 string convert(string s, int numRows); 示例 1 输入s “PAYPALISHIRING”, numRows 3 输出“PAHNAPLSIIGYIR” 示例 2 输入s “PAYPALISHIRING”, numRows 4 输出“PINALSIGYAHRPI” 解释 示例 3 输入s “A”, numRows 1 输出“A” 提示 1 s.length 1000 s 由英文字母小写和大写、‘,’ 和 ‘.’ 组成 1 numRows 1000 蛮力法直接挨个计算元素坐标然后计算
class Solution:def convert(self, s: str, numRows: int) - str:if numRows 1:return sunit_num numRows * 2 - 2res for i in range(numRows): # numRows - 1 1for j in range(i, len(s), unit_num):res s[j]if i % (numRows - 1) ! 0:k j - i unit_num - iif k len(s):res s[k]return res大佬的解法核心在于有几行就分别构造几行数据然后 join连续行立个 flag 进行转向
class Solution:def convert(self, s: str, numRows: int) - str:if numRows 2: return sres [ for _ in range(numRows)]i, flag 0, -1for c in s:res[i] cif i 0 or i numRows - 1: flag -flagi flagreturn .join(res)# 作者Krahets
# 链接https://leetcode.cn/problems/zigzag-conversion/solutions/21610/zzi-xing-bian-huan-by-jyd/#
# 来源力扣LeetCode
# 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。