您的位置:首页 > 其它

leetcode ------ZigZag Conversion (6)

2016-06-06 13:44 267 查看
题目:



解题思路:这个题目是简单题,但是其中也隐含了一些有意思的细节问题,题目本身的意思是按照给定的行数把字符串分拆成折线的形式,横向输出。 看着这个题目,很自然的想到了用二维数组来解决这个问题,添加的顺序基本上有两类。

第一类是向下的按个添加

第二类的向右上添加

所以,在程序中需要有一个标志位来标示下一个字母的添加方向,如果是向下的话,当前左边的X坐标不变,y+1就好。 如果是向右上添加的话,x-1,y+1即可。 思路本身很好实现。

public String convert(String s, int numRows) {
if(s==null||s.equals(""))  return s;
boolean flag = true;
int m =0,n=0;
int wight=s.length();
if(wight<1)  wight=1;
String arr[][] = new String[numRows][wight];
for(int x=0;x<numRows;x++){
for(int y=0;y<wight;y++){
arr[x][y]="*";
}
}
int temp =s.length();
for(int i=0;i<temp;i++){
if(flag){
arr[m]
=s.substring(0,1);
s=s.substring(1);
if(m==numRows-1){
flag=false;
m--;
}
m++;
}else{
m--;
n++;
arr[m]
=s.substring(0,1);
s=s.substring(1);
if(m==0) {
m++;
flag=true;
}
}
}
String  result="";
for(int x=0;x<numRows;x++){
for(int y=0;y<wight;y++){
if(arr[x][y]!=null&&!"*".equals(arr[x][y]))
result+=arr[x][y];
}
}

for(int x=0;x<numRows;x++){
for(int y=0;y<wight;y++){
System.err.print(arr[x][y]+"  ");
}
System.err.println("");
}
return result;

}


可以通过,但是,这里却有个小的问题,就是数组定义的问题 第一个维度不用说,明显是指给定的行数,我们需要找到的是列数与行数和字符串长度之间的关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode