您的位置:首页 > 其它

6 ZigZag Conversion

2015-06-15 01:27 239 查看
The string “PAYPALISHIRING” is written in a zigzag(Z字形) 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"
.

Tags:String

import java.util.*;

public class No6 {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

String s = scanner.next();
int n = scanner.nextInt();

String str = convert(s, n);

System.out.println(str);
}

public static String convert(String s, int n) {

if(n==1)
return s;

int dot = n + n - 2; // 折点

String[] str = new String
;
String str1 = "";

for (int a = 0; a < n; a++) {
str[a] = "";
}

int i = 0;
while (dot * i < s.length()) {
str[0] += s.charAt(dot * i);
i++;
}
// return str[0];

int dots;

for (int j = 1; j < n - 1; j++) { // j表示行数;从第2行到倒数第2行;

i = 0;  //重置为0;
while ((dots = dot * i) < s.length()) {

if ((dots + j) < s.length()) {
str[j] += "" + s.charAt(dots + j);
}
if ((dots + dot - j) < s.length()) {
str[j] += "" + s.charAt(dots + dot - j);
}
i++;
}
}

i = 0; // 重置i;
while ((n - 1 + dot * i) < s.length()) {
str[n - 1] += s.charAt(n - 1 + dot * i);
i++;
}

for (i = 0; i < n; i++) {
str1 += str[i];
}

return str1;

}

}


input

abcdefghijklmnopqrstuvwxyz 5


output

aiqybhjprxzcgkoswdflntvemu


0123456789101112
a0i8q16y24
b1h7j9p15r17x23z25
c2g6k10o14s18w22
d3f5l11n13t19v21
e4m12u20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: