• leetcode ZigZag conversion(mediium) /java


    这个题目很简单。

    需要注意的是,边界处理。和数据测试时考虑到特殊情况。

    开头加了两行代码处理特殊情况。

      1 /**
      2 * zigzag
      3 * 2017-5-8
      4 **/
      5 
      6 import java.io.*;
      7 import java.util.*;
      8 import java.lang.*;
      9 
     10 public class Solution
     11 {
     12     public static String convert(String s, int numRows)
     13     {
     14 
     15         String r=new String("");
     16         if(s==null||s.length()<=0)
     17             return r;
     18         if(numRows==1)
     19             return s;
     20         int len=s.length();
     21         int t=2*numRows-2;
     22         //System.out.println("t--"+t);
     23         int c=(numRows-1)*(len/t+1);
     24         //System.out.println("len--"+len);
     25         //System.out.println("c--"+c);
     26         char[][] ch=new char[numRows][c];
     27         int i=0,j=0,k=0;
     28         char[] ss=s.toCharArray();
     29         for(j=0;j<numRows;j++)
     30         {
     31             for(k=0;k<c;k++)
     32             {
     33                 ch[j][k]='0';
     34             }
     35         }
     36         j=0;
     37         k=0;
     38         for(i=0;i<len;i++)
     39         {
     40             ch[j][k]=ss[i];
     41             //System.out.println(j+"--"+k+"--"+ch[j][k]);
     42             if(j<numRows-1&&(k%(numRows-1)==0))
     43             {
     44                 j++;
     45                 continue;
     46             }
     47             if(j==numRows-1&&(k%(numRows-1)==0))
     48             {
     49                 j--;
     50                 k++;
     51                 continue;
     52             }
     53             if(j>0&&(k%(numRows-1)!=0))
     54             {
     55                 j--;
     56                 k++;
     57                 continue;
     58             }
     59             if(j==0&&(k%(numRows-1)!=0))
     60             {
     61                 j++;
     62                 continue;
     63             }
     64         }/*
     65         for(j=0;j<numRows;j++)
     66         {
     67             for(k=0;k<c;k++)
     68             {
     69                 System.out.print(ch[j][k]);
     70             }
     71             System.out.println();
     72         }
     73         */
     74         char[] ch1=new char[len];
     75         i=0;
     76         for(j=0;j<numRows;j++)
     77         {
     78             for(k=0;k<c;k++)
     79             {
     80                 if(ch[j][k]!='0')
     81                 {
     82                     ch1[i]=ch[j][k];
     83                     i++;
     84                 }
     85 
     86             }
     87         }
     88         r=String.valueOf(ch1);
     89         return r;
     90     }
     91     public static void main(String[] args)
     92     {
     93 
     94         while(true)
     95         {
     96             Scanner input=new Scanner(System.in);
     97             String s=input.nextLine();
     98             int numRows=input.nextInt();
     99             System.out.println(convert(s,numRows));
    100         }
    101 
    102     }
    103 
    104 }
    View Code
  • 相关阅读:
    递归
    Python 实例方法、类方法、静态方法的区别与作用
    内置函数和匿名函数
    迭代器和生成器
    函数动态传参详细,作用域和名称空间,global和nonlocal
    初识函数(定义,语法,返回值,参数)
    pycharm快捷键第二弹
    pycharm快捷键
    bmp图片显示
    jpg图片在开发板上显示
  • 原文地址:https://www.cnblogs.com/zhenzhenhuang/p/6823658.html
Copyright © 2020-2023  润新知