Go语言力扣刷题-Z字形变换|Go主题月
Z字形变换:
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:
P A H N
A P L S I I G
Y I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:”PAHNAPLSIIGYIR”。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zigzag-conversion
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这个题目搞了半天才搞懂Z变换是怎么回事,就是将一个字符串的字符,按照指定行依次按照下图方式进行排列,最终再按照行进行依次读取形成新的字符串:
↓↗↓↗↓…
本题设计到Go语言中知识包括:
- 字符串与字符的相互转换:
1 | // s 为string时,s[i]类型为byte,可通过string(s[i])将其转换为字符 |
- List的使用:
1 | package main |
前面的题目把我给绕进去了,一直再总结归纳Z字形变换的数学规律,其实使用模拟方法更容易求解,也更好理解:即一步一步的模拟字符串的Z字形变换,然后依次输出各行字符。
原本因为不熟悉Go的字符串与字符转换,想学习一下Go的List类型,发现有点复杂,最终使用了[]string来实现,开森!
1 | func convert(s string, numRows int) string { |
Go语言力扣刷题系列文章 |Go主题月