leetcode:ZigZag Conversion 曲线转换
Question:
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".
字符串"PAYPALISHIRING"就像以下“Z”形排列
P A H N
A P L S I I G
Y I R 所要得到的字符串按横行的顺序依次排列,这个字符串要求得到"PAHNAPLSIIGYIR"
给定string convert(string text, int nRows)这个函数,你需要写代码完成这个转换,nRows可以为任意正整数。
设计思想:1、对Rows的情况进行讨论,当Rows=1或者字符串text的长度<nRows,那么可以确定字符串还是顺序输出;
2、如果nRows=2,那么首先要获得text字符串偶数位置上的字母,然后获得奇数位置上的字母;
3、如果nRows>2且字符串长度>nRows,设计一个mark数组用来标记在字符串会在第几行,比如mark[k]=i,意思是第K个字母会在第i行。通过设置一boolean变量bool,来控制字符串移动方向,通过设置i来控制换行。
4、最后根据mark标记数组中的内容,分别添加第0行、1行一直到nRows行的字母到str中,并返回。
代码实现(java):
class Solution6 {
public String convert(String s, int nRows) {
String str="";
if(0==nRows||1==nRows||s.length()<=nRows)
return s;
if(2==nRows){
for(int i=0;i<s.length();i+=2)
str+=s.charAt(i);
for(int i=1;i<s.length();i+=2)
str+=s.charAt(i);
return str;
}
int i=0,k=0;
boolean bool=false;
Integer []mark=new Integer[s.length()];
while(k<s.length()){
mark[k++]=i;
if(i==nRows-1){
bool=true;
}
else if(i==0){
bool=false;
}
if(!bool)
i++;
else if(bool)
i--;
}
k=0;i=0;
while(i<nRows){
while(k<s.length()){
if(i==mark[k]){
mark[k]=-1;
str+=s.charAt(k);
}
k++;
}
k=0;
i++;
}
return str;
}
}
2013-10-04
leetcode:ZigZag Conversion 曲线转换的更多相关文章
- 6.[leetcode] ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- LeetCode ZigZag Conversion(将字符串排成z字型)
class Solution { public: string convert(string s, int nRows) { string a=""; int len=s.leng ...
- LeetCode: ZigZag Conversion 解题报告
ZigZag ConversionThe string "PAYPALISHIRING" is written in a zigzag pattern on a given num ...
- LeetCode——ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- [leetcode]ZigZag Conversion @ Python
原题地址:https://oj.leetcode.com/problems/zigzag-conversion/ 题意: The string "PAYPALISHIRING" i ...
- [LeetCode]ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...
- [LeetCode] ZigZag Conversion [9]
称号 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows li ...
- C++ leetcode::ZigZag Conversion
mmp,写完没保存,又得重新写.晚上写了简历,感觉身体被掏空,大学两年半所经历的事,一张A4纸都写不满,真是一事无成呢.这操蛋的生活到底想对我这个小猫咪做什么. 今后要做一个早起的好宝宝~晚起就诅咒自 ...
- Leetcode:ZigZag Conversion分析和实现
问题的大意就是将字符串中的字符按锯齿状(倒N形)垂直由上向下放置,最后水平从左向右读取.比如 ABCDEFGHIJKLMN,4表示 A G M B F H ...
随机推荐
- Getting Started with Mongoose and Node.js – A Sample Comments System | Dev Notes
In this post, we’re going to be creating a sample comments system using Node, Express and Mongoose. ...
- Netty那点事
一.Netty是什么 Netty,无论新手还是老手,都知道它是一个“网络通讯框架”. 所谓框架,基本上都是一个作用:基于底层API,提供更便捷的编程模型. 那么”通讯框架”到底做了什么事情呢?回答这个 ...
- linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义【转】
转自:http://blog.csdn.net/zjc156m/article/details/38920321 http://javawind.net/p131 VIRT:virtual memor ...
- 二分查找和hash查找
转载:http://blog.csdn.net/feixiaoxing/article/details/6844723 无论是数据库,还是普通的ERP系统,查找功能数据处理的一个基本功能.数据查找并不 ...
- Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(二)
然后是项目下的文件:完整的项目请看 上一篇 Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一) 项目下的springmvc-servlet.xml配置文件: ...
- Oracle PO - 模块一揽子采购协议小结
本文总结oracle ebs采购订单(po)模块一揽子采购协议的相关知识,总结如下: 1.理论介绍 (1)名词术语 一揽子采购协议(Blanket Purchase Agreement,BPA)是指某 ...
- R语言记录程序运行的时间
f <- function(start_time) { start_time <- as.POSIXct(start_time) dt <- difftime(Sys.time(), ...
- leetcode:Reverse Linked List II
Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1-> ...
- git(icode)分支及发布管理方式
如果git(icode)不加管理,可能出现枝节蔓生.四处开放的版本库.到处都是分支,完全看不出主干发展的脉络,造成下图的局面: 为了降低合并和版本管理的成本,团队引入一种值得借鉴的管理方式(link) ...
- UVa 11134 (区间上的贪心) Fabled Rooks
这道题真是WA得我心力交瘁,好讨厌的感觉啊! 简直木有写题解的心情了 题意: n×n的棋盘里,放置n个车,使得任意两车不同行且不同列,且第i个车必须放在给定的第i个矩形范围内.输出一种方案,即每个车的 ...