首页 > 代码库 > ZigZag Conversion
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 NA P L S I I GY 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"
.这道题A的略烦
逻辑上,一行一行的遍历改写后的字符串,计算出每一行每一个字符在str中的位置
1 public class Solution { 2 public String convert(String s, int nRows) { 3 int length_part = 2 * nRows - 2;//一个zigzag组成部分的长度 4 int length_lastpart;//最后一个组成部分的长度 5 int num_part;//组成部分的个数 6 int length_s = s.length();//s长度 7 int length_in_part = length_part; 8 if(0 == s.length() || 1 == s.length() || 1 == nRows) 9 return s;10 11 String result = "";12 num_part = length_s / length_part;13 length_lastpart = length_s % length_part;//求出组成部分个数和最后一部分的长度14 15 //int interval = 2 * nRows - 2;//最大间隔16 17 for(int i = 1; i <= nRows; i++){//遍历zigzag逻辑上的每一行的字符,这里只是计算出在s中的位置18 int index = i - 1;//每一行第一个字符的位置,输出每行的一个字符后后移19 for(int j = 1; j <= num_part; j++){//输出每一行的内容20 result += s.charAt(index); 21 22 if(1 != i && nRows != i){ 23 //index += length_in_part; 24 result += s.charAt(index + length_in_part); 25 } 26 27 index += length_part;28 }//for29 if(i <= length_lastpart){//最后一部分还有内容30 result += s.charAt(index);31 if(index + length_in_part < s.length() && length_in_part != 0)32 result += s.charAt(index + length_in_part);33 }34 length_in_part -= 2;35 }36 37 return result; 38 }39 }
ZigZag Conversion
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。