剑指offer刷题day02

刷题(剑指offer02)

替换空格

题目:
  请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
分析1:
  题目所给的函数的参数为stringbuffer类型,考察的是对字符串的相关内容的了解程度。因此,需要对字符类型进行系统的复习。
Java字符串主要包含 String类和StringBuffer类和Stringbuilder类,关于2个类型的差别主要是在这里插入图片描述
  如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。

  (一个线程访问一个对象中的synchronized(this)同步代码块时,其他试图访问该对象的线程将被阻塞)。
另外字符串的一些常用操作如下:(其操作函数如下):
1.获取字符串中的第i个字符方法charAt(i)
2.获取指定位置的字符方法getChars(4个参数)

  str.getChars(indexBegin,indexEnd,array,arrayBegin);

3.字符串的比较函数
  int result = str1.compareTo(str2);
  int result = str1.compareToIgnoreCase(str2);
  boolean result = str1.equals(str2);
  boolean result = str1.equalsIgnoreCase(str2);
4.相互转换
转化为其他类型:
  Integer.parseInt(str)
转换为字符串类型:
  String.valueOf([int] i)
  Int.toString([int] i)
5.字符串查找
  indexOf()方法
  lastIndexOf()方法
6.字符串截取与拆分
截取substring()方法 :
  格式1:String result = str.substring(index);
  格式2:String result = str.substring(beginIndex,EndIndex);
拆分split()方法:
  格式1 :String strArray[] = str.split(正则表达式);
  格式2:String strArray[] = str.split(正则表达式,limit);
本题的解题思路有2:
1:直接调用Java的字符串替代函数:replace函数
样例为:

public static void main(String[] args) {
        System.out.println("hello$".replaceAll("$",""));
        System.out.println("hello$".replace("$",""));
        System.out.println("hello$".replaceAll("\\$",""));
    }
    
输出结果如下:
hello$
hello
hello

replace对应的是普通字符串,replaceAll对应的是正则表达式。
所以本题可通过代码如下解决:

public class Solution {
    public String replaceSpace(StringBuffer str) {
    	 return str.toString().replace(" ", "%20");
    }
}

同理可以通过如下代码:

public class Solution {
    public String replaceSpace(StringBuffer str) {
    	 int n = str.length();
        for(int i=0; i<n; i++) {
        //charAt函数是字符串使用比较频繁的api。
            if(str.charAt(i) == ' ') {
                n += 2;
                str.replace(i, i+1, "%20");
            }
        }
        return str.toString();
    }
}

特别需要注意的是+符号=符号一定要使用英文符号,不然的话,会一直显示编译不通过的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值