Chinaunix首页 | 论坛 | 博客
  • 博客访问: 255949
  • 博文数量: 170
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1709
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-06 18:01
文章分类

全部博文(170)

文章存档

2016年(11)

2015年(130)

2014年(29)

分类: Java

2015-03-31 16:52:28

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P   A   H   N
A P L S I I G
Y   I   R
And then read line by line: "PAHNAPLSIIGYIR"


Write the code that will take a string and make this conversion given a number of rows:

string convert(string text, int nRows);
convert("PAYPALISHIRING", 3) should return "PAHNAPLSIIGYIR".

对于字符串操作 深有体会 使用+效率低:代码如下:


   public String convert(String s, int nRows) {
         if(s==null||s.length()<=1||nRows<=1)
return s;
int len=s.length();
String sb="";
for(int i=0;i int k=i;
if(k==0||k==nRows-1)
while(k sb+=s.charAt(k);
k+=2*nRows-2;
 
}
else {
while(k  sb+=s.charAt(k);
k+=2*(nRows-i)-2;
if(k>=len)
break;
 sb+=s.charAt(k);
k+=2*i;
 
}
}
}
return sb;
    }
执行时间是565ms

public String convert(String s, int nRows) {
if(s==null||s.length()<=1||nRows<=1)
return s;
int len=s.length();
StringBuilder sb=new StringBuilder();
for(int i=0;i int k=i;
if(k==0||k==nRows-1)
while(k sb.append(s.charAt(k));
k+=2*nRows-2;
 
}
else {
while(k sb.append(s.charAt(k));
k+=2*(nRows-i)-2;
if(k>=len)
break;
sb.append(s.charAt(k));
k+=2*i;
 
}
}
}
return sb.toString();
 
 
}

使用StringBuilder是348ms。
阅读(756) | 评论(0) | 转发(0) |
0

上一篇:LongestPalindromicSubstring

下一篇:IntegertoRoman

给主人留下些什么吧!~~