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];字符串数组的一个小知识点。

所以这道题中的String[]str 用Arrays.fill(str,"")赋了初值。

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;
	}



代码如下:像对二维数组进行操作。
 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();
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值