题目:ZigZag Conversion

一串字符按照Z字形的数组给了我们,要求转成原本的顺序。

思路:

统计“|/”的个数;

竖着的和斜着的下标有对应关系;

竖着的:k = j*(2*numRows - 2) + i;

斜着的(不含两个端点):k = (j + 1)*(2*numRows - 2) - i;

注意:可能会有残缺的部分。

/******************************************************************
ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)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 text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".
******************************************************************/
#include <stdio.h>
#include <memory.h>char* convert(char* s, int numRows) {int length = strlen(s);printf("%d\n",length);if(length <= numRows || numRows <= 1)return s;int zn = length/(2*numRows - 2);//Z字形竖着放时,最开始的一竖和一撇的组合整体的个数int sn = length%(2*numRows - 2);//Z字形竖着放时,剩下残缺的组合的字母个数char *cs = (char *)malloc((length + 1)*sizeof(char));memset(cs,0,(length + 1)*sizeof(char));int index = 0,k = 0;for (int i = 0;i < numRows;i++){//完整组合的对应转换for(int j = 0;j < zn;j++){//竖线上的点坐标对应公式k = j*(2*numRows - 2) + i;cs[index++] = s[k];if(i > 0 && i < numRows - 1){//斜线上的不含两端点的点坐标对应公式k = (j + 1)*(2*numRows - 2) - i;cs[index++] = s[k];}}if(sn > i){//残缺组合的对应转换k = zn*(2*numRows - 2) + i;cs[index++] = s[k];if(i > 0 && i < numRows - 1 && sn > 2*numRows - 2 - i){k = (zn + 1)*(2*numRows - 2) - i;cs[index++] = s[k];}}}return cs;
}void main(){char s[] = "Apalindromeisaword,phrase,number,orothersequenceofunitsthatcanbereadthesamewayineitherdirection,withgeneralallowancesforadjustmentstopunctuationandworddividers.";char *cs = convert(s,2);printf("%s\n",cs);free(cs);
}

转载于:https://www.cnblogs.com/yeqluofwupheng/p/6679118.html

[LeetCode]ZigZag Conversion相关推荐

  1. LeetCode ZigZag Conversion

    题意:给出一个字符串和行数,求字符串zigzag变换后的字符串 如PAYPALISHIRING和行数为3,zigzag形式为 P A H N A P L S I I G Y I R 即结果字符串为PA ...

  2. leetCode 6. ZigZag Conversion 字符串 (上传费劲)

    6. ZigZag Conversion 题目:https://leetcode.com/problems/zigzag-conversion/ 1 2 3 4 5 6 7 8 9 10 11 12 ...

  3. [勇者闯LeetCode] 6. ZigZag Conversion

    [勇者闯LeetCode] 6. ZigZag Conversion Description The string "PAYPALISHIRING" is written in a ...

  4. [LeetCode题解] ZigZag Conversion

    原文在这,可以来我blog翻翻哦. 第二天.今天AC掉了一道之前没AC掉的题目... 今天的题目是6. ZigZag Conversion 题目描述: The string "PAYPALI ...

  5. ZigZag Conversion

    ZigZag Conversion 1. Question 给定行数,将某字符串转换为zigzag形式,然后按行输出.zigzag形式如: The string "PAYPALISHIRIN ...

  6. 6——ZigZag Conversion

    六.ZigZag Conversion 锯齿变换 题目大意:输入一个字符串和int型(锯齿层数) 将字符串以锯齿变化重新排序 例: "HAIZEIKEJILAOCHUANZHANG" ...

  7. LeetCode 6. ZigZag Conversion

    原题链接在这里:https://leetcode.com/problems/zigzag-conversion/ 题目: The string "PAYPALISHIRING" i ...

  8. 蜗牛慢慢爬 LeetCode 6. ZigZag Conversion [Difficulty: Medium]

    题目 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...

  9. ZigZag Conversion leetcode java

    题目: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows l ...

最新文章

  1. Android开发3g、wap、net的区别
  2. jenkins基本使用
  3. 获取Web.config配置节
  4. 一个简单的游戏服务器框架
  5. Activiti的历史记录级别
  6. 以 Ext.Net 1.2.0 为例了解网页测试工具 HttpWatch
  7. 卧槽!“饿了么”把“饿了吗”告了,网友:判决结果没想到~
  8. 语音处理:Python实现音频文件声道分离批量处理
  9. matlab 蜗杆轮廓,基于MATLAB的直廓环面蜗杆的可视化
  10. 计算机基础知识——二进制
  11. 一款开源的轻量级企业流程开发平台,源码分享
  12. 自动化脚本开发,真香.....
  13. JC-6、OpenCV+Tensorflow入门人工智能图像处理
  14. 报告老板,我们的H5页面在iOS11系统上白屏了!
  15. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析
  16. 五大浏览器:chrome---Blink IE--Trident firebox--Gecko safari--Webkit opera--Blink
  17. DEA(数据包络分析)程序模板
  18. Java语言的特性和优点
  19. 情绪是人生最大的敌人
  20. 详解Python正则表达式(含丰富案例)

热门文章

  1. CODING 2.0 企业级持续交付解决方案
  2. 用户信号量及其PV操作处理实际问题
  3. C#调用C/C++ DLL 参数传递和回调函数的总结
  4. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 1.1 从解决方案中甄别需求...
  5. spring 配置文件 数据库引入
  6. 生成随机密码的十种方法
  7. proxool连接池空闲连接中断问题解决
  8. citrix xenapp应用保存文件时隐藏服务器上的磁盘
  9. 每个人应该知道的NVelocity用法
  10. 【Ray Tracing The Next Week 超详解】 光线追踪2-6 Cornell box