6. ZigZag Conversion - LeetCode
Question

Solution
题目大意:将字符串按Z字型排列,然后再一行一行按字符输出
思路:按题目中的第一个例子,画出如下图,通过n的不同值,可以找出规律红线的长度是2*n-2,蓝线的长度是interval - row,这样根据已知参数知道有n行,所以遍历n行,每行有多少列呢,每一列最后一列必须小于s.length,这样就可以通过遍历来求出最终结果了。

Java实现:
public String convert(String s, int n) {
if (n == 1 || n >= s.length()) return s;
StringBuilder sb = new StringBuilder();
int interval = 2 * n - 2;
for (int row = 0; row < n; row++) {
int step = interval - 2 * row;
for (int col = row; col < s.length(); col += interval) {
sb.append(s.charAt(col));
if (step > 0 && step < interval && (col + step) < s.length()) {
sb.append(s.charAt(col + step));
}
}
}
return sb.toString();
}
Ref
思路参考了这个视频:https://www.youtube.com/watch?v=7UQ71uwQFx4
6. ZigZag Conversion - LeetCode的更多相关文章
- ZigZag Conversion leetcode java
题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...
- ZigZag Conversion [LeetCode]
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- 6.[leetcode] ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- LeetCode解题报告—— 2 Keys Keyboard & Longest Palindromic Substring & ZigZag Conversion
1. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You ...
- LeetCode ZigZag Conversion(将字符串排成z字型)
class Solution { public: string convert(string s, int nRows) { string a=""; int len=s.leng ...
- 【leetcode❤python】 6. ZigZag Conversion
#-*- coding: UTF-8 -*- #ZigZag Conversion :之字型class Solution(object): def convert(self, s, numRow ...
- leetcode第六题 ZigZag Conversion (java)
ZigZag Conversion The string "PAYPALISHIRING" is written in a zigzag pattern on a given nu ...
- leetcode题解 6.ZigZag Conversion
6.ZigZag Conversion 题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a gi ...
- LeetCode 6. ZigZag Conversion & 字符串
ZigZag Conversion 看了三遍题目才懂,都有点怀疑自己是不是够聪明... 就是排成这个样子啦,然后从左往右逐行读取返回. 这题看起来很简单,做起来,应该也很简单. 通过位置计算行数: P ...
随机推荐
- ip地址与子网掩码概述
IP地址: IP地址(Internet Protocol):IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异. IP地址分为五 ...
- spark-shell报错java.lang.IllegalArgumentException: java.net.UnknownHostException: namenode
在使用spark on yarn启动spark-shell时,发现报错: 是说找不到主机名为namenode的主机,那么应该是配置文件出错了. 经过检查,发现是spark-defaults.conf文 ...
- pip freeze > requirements.txt` 命令输出文件中出现文件路径而非版本号
pip freeze > requirements.txt 命令输出文件中出现文件路径而非版本号 解决办法: pip list --format=freeze > requirements ...
- Java 实例 - 读取文件内容
原文作者:菜鸟教程 原文链接:Java 实例 - 读取文件内容(建议前往原文以获得最佳体验) 按行读取文本文件 import java.io.*; public class Main { public ...
- python---反转链表
class Node: def __init__(self, data): self.data = data self.next = None class Solution: "" ...
- 2021年Java后端技术知识体系
-----2021/1/22
- 从实例学习 Go 语言、"并发内容" 学习笔记及心得体会、Go指南
第一轮学习 golang "并发内容" 学习笔记,Go指南练习题目解析.使用学习资料 <Go-zh/tour tour>.记录我认为会比较容易忘记的知识点,进行补充,整 ...
- NodeJS学习day1
今天主要学习的IO操作 const fs = require('fs') fs.readFile('./files/11.txt','utf-8',function(err,daraStr){ //读 ...
- vue elementUI 之 this.$confirm 用法
this.$confirm('您确定退出当前账号吗?', '提示', { confirmButtonText: '确定', ...
- js 递归求1/2+1/4+1/6+....1/n的和,和1/1+1/3+1/5+.....+1/n的和
function fun1(n) { if (n == 2) { return 1 / 2; } if (n == 1) { ...