Scala solution


  • 0
    S
    def convert(s:String, numRows:Int):String = {
      numRows match {
        case 1 => s
        case n if n > 1 => {
          val lengthPerCycle = 2*numRows - 2
          val cycles = (s.length / lengthPerCycle) + 1
          val sb = new StringBuilder
          for (i <- 0 until numRows) {
            for (cycle <- 0 until cycles) {
              // print full vertical
              val col = (cycle*lengthPerCycle)+i
              if (col < s.length)
                sb.append(s(col))
              // print diagonal
              val dia = ((cycle+1)*lengthPerCycle)-i
              if (i != 0 && i < numRows - 1 && dia < s.length)
                sb.append(s(dia))
            }
          }
          sb.toString()
        }
        case _ => throw new Error("negative number")
      }
    }
    

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.