请实现一个函数,把字符串 s 中的每个空格替换成“%20“。

本文介绍两种方法实现字符串中空格的替换。方法一通过开辟一个3倍大小的新数组来存放替换后的字符串,方法二先计算空格数量再确定新数组大小。

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

方法一:

假设字符串长度为n,因为不知道字符串有多少个空格,假设字符串都是空格,加入三个字符%20,就需要3n个空间

定义两个指针,第一个指针指向原始字符串的第一个字符i,第二个指针指向新开辟静态数组的索引位置j。

如果i指向不是空格,则将i处的值给j,否则j处赋值%20。

但这个方法会浪费大量空间解决方法:找出空格数确定数组大小看下个方法

class Solution {
    public String replaceSpace(String s) {
        // 获取字符串长度
        int n = s.length();
        // 定义一个原字符串3倍长度的数组,不知道字符串会有多少个空格,假设都是空格的大小
        char[] arr = new char[3*n];
         int j=0;
         for(int i=0;i<n;i++){
            //  返回指定索引处的char值
             char c = s.charAt(i);
            // 如果是空格计入%20
             if(c == ' '){
                 arr[j++]='%';
                  arr[j++]='2';
                   arr[j++]='0';
             }else{
                //  如果不是,将获取s的值给c后直接写入arr
                 arr[j++]=c;
             }
         }
        //  把新的字符数组包装成String。
         return new String(arr);
    }
}

 

方法二:

 遍历字符串确定空格数

根据空格数确定数组长度,因为没找到一个空格,要增加三个字符所以每找到一个空格数组大小就要扩大两个单位

定义两个指针,第一个指针指向原始字符串的第一个字符i,第二个指针指向新开辟静态数组的索引位置j。

如果i指向不是空格,则将i处的值给j,否则j处赋值%20。

class Solution {
    public String replaceSpace(String s) {
       int n= s.length();
      int count =0;
    //   遍历字符串找出有几个空格
    // ToCharArray,将字符串对象中的字符转换为一个字符数组
      for(char c: s.toCharArray()) {
          if(c==' '){
              count++;
          }
      }
    //   根据空格数确定数组大小
      char arr[] = new char[n+2*count];
      int j =0;
      for(int i =0;i<n;i++){
            //  返回指定索引处的char值
          char a = s.charAt(i);
          if(a ==' '){
              arr[j++]='%';
                 arr[j++]='2';
                    arr[j++]='0';
          }else{
               arr[j++]=a;
          }
      }
      return new String (arr);
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值