首页 > 代码库 > ZigZag Conversion
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 RAnd 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"
.答案
public class Solution { public String convert(String s, int nRows) { if(s==null||s.length()<=1||nRows==1) { return s; } StringBuilder result=new StringBuilder(s.length()); int LEN=2*nRows-2; int times=s.length()/LEN+1; for(int row=0;row<nRows;row++) { int p1=row; int p2=row==nRows-1?LEN+row:LEN-row; if(p1<s.length()) { result.append(s.charAt(p1)); } if(p2<s.length()) { result.append(s.charAt(p2)); } for(int i=0;i<times;i++) { p1+=LEN; if(p1!=p2&&p1<s.length()) { result.append(s.charAt(p1)); } p2+=LEN; if(p2<s.length()) { result.append(s.charAt(p2)); } } } return result.toString(); } }
ZigZag Conversion
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。