/**
* 剑指offer第四题 替换空格为“%20”
* 解题思路就是从后向前遍历,使移动次数减少
* 两种实现方式:1 创建新的字符串复制上去 2在原有的字符串上做替换
* @author Lenovo
*
*/
第一种:
public class ZiFuChuan2 {
//创建新的字符串
public String change(char[] a){
int length=a.length;
int blanknum=0;//空格数量
for(int i=0;i<length;i++){
if(a[i]==' '){
blanknum++;
}
}
int newlength=length+blanknum*2;//新创建的数组长度
char[] a2=new char[newlength];
int newlen=newlength-1;
for(int i1=length-1;i1>=0;i1--){
if(a[i1]!=' '){
a2[newlen--]=a[i1];
}else{
a2[newlen--]='0';
a2[newlen--]='2';
a2[newlen--]='%';
}
}
return String.valueOf(a2);//将数组转换为字符换
}
第二种:
//在原有的字符串上改变
public String change1(StringBuffer str){
if(str==null)
{
return null;
}
for(int i=0;i<str.length();i++)
{
char c = str.charAt(i);
if(c==' ')
{
str.replace(i,i+1,"%20");
// sb.append("%20");
}
}
return str.toString();
}
总结:
将数组转化为字符串的方式:
(直接 a2.toString(); 这样输出的是 [类型@哈希值] 不行)
方法1:直接在构造String时转换。
char[] data = {'a', 'b', 'c'};
String str = new String(data);
方法2:调用String类的方法转换。
String.valueOf(char[] ch)
将字符串转化为数组的方式:
char[] a=zi.toCharArray();
将String类型转换为Stringbuffer
String z=“abc”;
StringBuffer s=new StringBuffer(zi);
将String类型转换为Stringbuffer
s.toString();