String——zigzag-conversion

题目:

例如给定字符串和行数String s="PAYPALISHIRING" 和nRows == 3;

P   A   H    N
A P L S I I G
Y   I   R
return"PAHNAPLSIIGYIR".


这题里包含的关于String[] str=new Srting[1];字符串数组的一个小知识点。

如下:

public static void main(String[] args)
	{
		String[] strs=new String[1];

		System.out.println(strs[0]);//当不对strs中元素赋值时,能打印出null;

		//System.out.println(""+strs[0].charAt(0));//这样打不出字符'n',原因是NullPointerException;
		
		strs[0]+="a";//但是进行字符串连接操作后打印出“nulla”,并且"nulla"竟然成为strs[0]的字符串
		
		System.out.println(""+strs[0].charAt(0));//打印出'n';
		
		System.out.println(""+strs[0].length());//length为5;
	
		System.out.println(strs[0]);//字符串为nulla;
	}


<span style="font-family:SimSun;font-size:18px;">所以这道题中的String[]str 用Arrays.fill(str,"")赋了初值。</span>
<span style="font-family:SimSun;font-size:18px;">
</span>
代码如下:


 public String convert(String s, int nRows) {
        if(s == null || s.length()<=1||nRows == 1)
            return s;
        
        String[]strs=new String[nRows];
        Arrays.fill(strs,"");
        
        int row=0;
        int troop=1;//向上或者向下走的步数;
        for(int i=0;i<s.length();i++)
            {
            strs[row]+=s.charAt(i);
            row+=troop;
            if(row == nRows)
                {
                row=nRows-2;
                troop=-1;
            }
            else if(row == -1)
                {
                row=1;
                troop=1;
            }
        }   
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<nRows;i++)
            {
            sb.append(strs[i]);
        }
        return sb.toString();
    }




你可能感兴趣的:(String——zigzag-conversion)