【LeetCode】6.Z 字形变换
6.Z 字形变换
我的思路貌似没有第二家,不过我懒得解释了。
#include <string>
#include <iostream>
using namespace std;template<typename T>
T ConvertZ(const T& vec, int N)
{if (N <= 1)return vec;T ret;int n = N - 1;int n2 = n * 2;int length = vec.size();ret.resize(length);//组数-1int m = length / n2;//最后一组的元素数量 [0, 2n)int other = length - m * n2;//最后一组的每行元素数量(一共N行)int* last = new int[N]();//首尾行特殊判断if (other > 0){last[0] = 1;if (other > n){last[n] = 1;}}//其余行for (int i = 1; i != N; ++i){if (i < other)last[i] += 1;if (n2 < other + i)last[i] += 1;}//第n行前的数量求和for (int i = 0; i != N; ++i){last[i] += m;//组数//第一行和最后一行只加mif (i != 0 && i != n)last[i] += m;if (i > 0)last[i] += last[i - 1];}for (int i = 0; i != length; ++i){//余数int mu = i % n2;//组号int div = i / n2;if (mu == 0){ret[div] = vec[i];}else if (mu == n){ret[last[n - 1] + div] = vec[i];}else if (mu < n){ret[last[mu - 1] + div * 2] = vec[i];}else if (mu > n){ret[last[n2 - mu - 1] + div * 2 + 1] = vec[i];}}delete[] last;return ret;
}int main()
{wcout << L"---------------------string is------------------------" << endl;wstring str0 = L"PAYPALISHIRING";wcout << str0 << L" -> " << ConvertZ(str0, 3) << " should be \"PAHNAPLSIIGYIR\"" << endl;wcout << str0 << L" -> " << ConvertZ(str0, 4) << " should be \"PINALSIGYAHRPI\"" << endl;
}
【LeetCode】6.Z 字形变换相关推荐
- [模拟|字符串] leetcode 6 Z字形变换
[模拟|字符串] leetcode 6 Z字形变换 1.题目 题目链接 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHI ...
- LeetCode 6.z字形变换
LeetCode 6.z字形变换 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时, ...
- Java实现 LeetCode 6 Z字形变换
6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L ...
- LeetCode——6. Z 字形变换
6. Z 字形变换(中等难度) 题目描述: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING ...
- LeetCode 6. Z 字形变换(找规律)
1. 题目 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I ...
- Leetcode 006. Z 字形变换 | 每日一题
题目描述: 将一个给定字符串根据给定的行数,以从上往下.从左到右进行Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I ...
- LeetCode 6 Z字形变换
将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数: P A H N A P L S I I G Y I R 之后从左往右,逐行读取字符:"PAHNAP ...
- Leetcode 6.Z 字形变换 (每日一题 20210630)
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列.比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:P A ...
- leetcode —— 6. Z 字形变换
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T ...
- LeetCode 6. Z 字形变换 (N字形变换)
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P ...
最新文章
- SQL四种语言:DDL,DML,DCL,TCL
- 【Android】RxJava的使用(一)基本用法
- 电费结算(electric)
- html5决战沙城源码,决战沙城h5符文玩法介绍 怎么获得完美首通
- mysql映射超_Hibernate的映射类型 hibernate mysql映射类型
- 看到一个暴强的翻译,闲的蛋疼,写个c#版的
- 图---邻接矩阵 建立,深度遍历,广度遍历
- [计算机网络] - HTTP、HTTPS
- 链式添加_涂料导电炭黑添加量
- 【三维路径规划】基于matlab广度优先搜索算法无人机三维路径规划【含Matlab源码 270期】
- Linux入门基础命令教程
- kubernetes: CNI解读
- Adobe illustrator(AI) 矢量图形软件 | 图像描摹(怎么把白色背景色的图片背景变为透明色)
- 程序员实习期馒头加酸菜,转正后月薪10K起步:走路都带风
- MCU实现低功耗注意事项
- 学习python的记录1-通过if语句实现猜拳游戏
- Kafka 2.8.0 正式发布,增加了哪些新特性?
- (推荐)Swift入门级免费视频 - 只需学习8小时
- 配置CLion clang-format保存时自动格式化
- win10搜索服务器文件慢,Win10系统怎么加快文件搜索速度
热门文章
- html框架集把那根框架隐藏,HTML 框架集 frameset 和内嵌框架 iframe
- 九、Docker快速搭建Elastic Stack(上篇)
- 三十七、深入Vue.js组件Component(下篇)
- ​GPLinker:基于GlobalPointer的实体关系联合抽取
- 从近年顶会论文看领域自适应(Domain Adaptation)最新研究进展
- GPT v.s. 中国象棋:写过文章解过题,要不再来下盘棋?
- 无监督领域迁移及文本表示学习的相关进展
- 神经网络架构搜索(NAS)综述 | 附AutoML资料推荐
- ACM公选课第八节DP基础3 2020.4.23-5.10补
- web公选课第三节2020.5.18