将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为3时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:”LCIRETOESIIGEDHN”。
for (i <- 0 until line) { var start = i var begin = if (max - i * 2 == 0) i * 2else max - i * 2 while (start < str.length) { map += (i -> (map.get(i).get + str.charAt(start))) start = start + begin begin = if (max - begin == 0) max else max - begin } }
val arr = newArray[String](line) for (i <- 0 until line) { arr(i) = map.get(i).get } arr.mkString("") }
val map = mutable.Map[Int, String]() for (i <- 0 until line) { map += (i -> "") }
var index = 0 var flag = true for (i <- 0 until str.size) { map += (index -> (map.get(index).get + str.charAt(i))) if (flag) { index += 1 } else { index -= 1 }
if (index == line) { flag = !flag index = line - 2 }
if (index == -1) { flag = !flag index = index + 2 } } val arr = newArray[String](line) for (i <- 0 until line) { arr(i) = map.get(i).get } arr.mkString("") }