文本进行90度翻转HTML,字符串按照Z旋转90度然后上下翻转的字形按行输出字符串--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 s, int numRows);

Example 1:

Input: s = "PAYPALISHIRING", numRows = 3

Output: "PAHNAPLSIIGYIR"

Example 2:

Input: s = "PAYPALISHIRING", numRows = 4

Output: "PINALSIGYAHRPI"

Explanation:

P I N

A L S I G

Y A H R

P I

Accepted

303,542

Submissions

970,790

个人思路:

先计算出列数,用二维数组处理

然后分为字符落在竖和斜杠两种情况

竖:分为是否可以落满行的个数

斜杠同理

同时计算出当前竖的第一个值的列号

public String convert(String s, int numRows) {//ZigZag Conversion

int len=s.length();

if(numRows==1||s==null||s.equals(" ")||len<=numRows) return s;

else{

char[] result=new char[len];

char[] cs=s.toCharArray();

int cLen = 0;

int split1=2*(numRows-1);

int nDouble=len/split1;

if(len%split1==0){

cLen=(1+numRows-2)*nDouble;

}else if(len%split1<=numRows){

cLen=(1+numRows-2)*nDouble+1;

}else{

cLen=(1+numRows-2)*nDouble+(len%split1)-(numRows-1);

}

char[][] ch=new char[numRows][cLen];

int dif=split1;

for(int k=0;k

// System.out.println("start++++::::"+k);

if(k%dif==0){ //up start

int t=k>0?(k/2):0;

if(k+numRows>len){

for(int j=0;j

// System.out.println("45-----"+j+","+t+"="+(k+j));

ch[j][t]=cs[k+j];

}

k=len-1;

break;

}else{

for(int j=0;j

// System.out.println("52-----"+j+","+t+"="+(k+j));

ch[j][t]=cs[k+j];

}

k=k+numRows-2;

}

}else if((k%dif==(numRows-1))){//down start

// System.out.println(k);

int t=k+1-numRows>0?((k+1-numRows)/2):0;

int tt=numRows-1;

if(k+numRows-2>=len){

for(int j=0;j

--tt;

++t;

// System.out.println("64-----"+tt+","+t+"="+cs[k+j+1]);

ch[tt][t]=cs[k+j+1];

}

k=len-1;

break;

}else{

for(int j=0;j

--tt;

++t;

// System.out.println("t:"+tt);

// System.out.println("70-----"+tt+","+t+"="+cs[k+j+1]);

ch[tt][t]=cs[k+j+1];

}

k=k+numRows-2;

// System.out.println("79----"+k);

}

}

}

int next=0;

for(int i=0;i

for(int j=0;j

// System.out.print(ch[i][j]);

if(ch[i][j]!='\u0000'){

result[next++]=ch[i][j];

}

}

}

return new String(result);

}

}

python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式

本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

利用exif&period;js解决ios或Android手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

关于android中调用系统拍照,返回图片是旋转90度

转载博客:http://blog.csdn.net/walker02/article/details/8211628 项目开发中遇到的一个问题,对于三星手机在做手机照片选择时出现图片显示不正常,研究后 ...

移动端上传照片 预览&plus;Draw on Canvas&&num;39&semi;s Demo(解决 iOS 等设备照片旋转 90 度的 bug)

背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...

利用exif&period;js解决ios手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

解决ios手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非 ...

PyOpenCV图像逆时针旋转90度

warpAffine方法效果很搓,留下大片黑色区域. 使用flip和transpose可以实现逆时针旋转90度.先flip或先transpose均可. #coding:utf-8 import cv2 ...

MTK 屏幕旋转90度

http://blog.csdn.net/ouo555/article/details/44806837 1.屏幕显示顺时针旋转90度 lk 横屏logo,顺时针旋转90度显示修改bootable/b ...

C&plus;&plus; 方阵原地旋转90度

不额外申请内存(另外的一个二维数组空间),将一个方阵(二维数组)原地旋转90度,主要的思路是,由外向内,一圈圈的进行旋转(就是依次进行交换),如下图所示,当这些圈圈都交换完了之后,就完成了原地旋转了. ...

随机推荐

jQuery TimeCircles 倒计时

在线实例 默认 倒计时 使用方法

&lbrack;No000028&rsqb;Python的使用之禅及程序员应该明白的一些道理

最近疯狂的学习ruby和python着两门语言,看到书本上一些比较赞同的段子,摘抄并翻译如下: Python的使用之禅 Beautiful is better than ugly. 美丽好过丑陋Exp ...

React Native中的网络请求fetch和简单封装

React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...

gopush-cluster 架构

前言 gopush-cluster是一套golang开发的实时消息推送集群,主要分享一下开发这套系统的想法和思路. 架构 主要分为三个模块来开发,comet/web/message. comet 主要 ...

BZOJ1272&colon; &lbrack;BeiJingWc2008&rsqb;Gate Of Babylon

题解: 多重集合的组合数?还是0-m?有些元素有个数限制? 多重集合的组合数可以插板法,0-m直接利用组合数的公式一遍求出来,个数限制注意到只有15个,那我们就暴力容斥了 AC了真舒畅.. 注意开lo ...

raw&lowbar;input&lpar;&rpar; 与 input&lpar;&rpar;的区别

raw_input和input两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同.下面举两个例子,来说明两者 raw_input和input两个均是 pyth ...

nginx、fastCGI、php-fpm关系梳理(转载参考)

nginx.fastCGI.php-fpm关系梳理 还可以参考:http://www.cnblogs.com/skynet/p/4173450.html   前言: Linux下搭建nginx+php ...

Fedora 启动 SSH服务

一.Fedora 启动sshd服务: 1.先确认是否已安装ssh服务: [root@localhost ~]# rpm -qa | grep openssh-server openssh-server ...

超轻量级Json框架SmartObject

最近我在codeplex上发了一个项目SmartObject(基于framework4.5,目前是1.0版本).用法如下: // HowToUse using Spider.Data; //json ...

linux中cut、printf、awk、sed命令

cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值