• 剑指Offer——替换空格


    1、题目描述

      请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    2、代码实现

     1 package com.baozi.offer;
     2 
     3 /**
     4  * 请实现一个函数,将一个字符串中的每个空格替换成“%20”。
     5  * 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     6  *
     7  * @author BaoZi
     8  * @create 2019-07-10-17:51
     9  */
    10 public class Offer2 {
    11     public static void main(String[] args) {
    12         Offer2 offer2 = new Offer2();
    13         StringBuffer sb = new StringBuffer("We Are Happy.");
    14         String result = offer2.replaceSpace(sb);
    15         System.out.println(result);
    16     }
    17 
    18     public String replaceSpace(StringBuffer str) {
    19         //1、定义一个变量用于保存结果字符串
    20         String result = "";
    21         //2、进行边界值的检测,如果目标字符串为空则结果字符串直接返回空
    22         if (str == null || str.length() == 0) {
    23             return result;
    24         }
    25         //3、把目标字符串转换为子符数组,便于通过遍历找出目标字符串中空格的个数
    26         char[] charArray = str.toString().toCharArray();
    27         int count = 0;
    28         for (int i = 0; i < charArray.length; i++) {
    29             if (charArray[i] == ' ') {
    30                 count++;
    31             }
    32         }
    33         //4、根据计算出来的空格的个数计算出新的子符数组的长度
    34         char[] newCharArray = new char[charArray.length + 2 * count];
    35         //5、这是两个指针分别指向两个字符数组的最后一个位置,比较当前指针p1指向的位置是不是空格,如果是空格的话,
    36         //从p2指针指向的位置开始往里边依次添加字符:0、2、%,如果不是空格的话,把p1指针指向的字符赋值给p2指针指向的元素。
    37         int p1 = charArray.length - 1;
    38         int p2 = newCharArray.length - 1;
    39         //这个过程是通过一个while循环来实现的
    40         while (p1 >= 0) {
    41             if (charArray[p1] == ' ') {
    42                 newCharArray[p2--] = '0';
    43                 newCharArray[p2--] = '2';
    44                 newCharArray[p2--] = '%';
    45             } else {
    46                 newCharArray[p2--] = charArray[p1];
    47             }
    48             p1--;
    49         }
    50         //6、把新的字符数组转换成字符串并赋值给目标字符串
    51         result = String.copyValueOf(newCharArray);
    52         return result;
    53     }
    54 }
  • 相关阅读:
    SQLSERVER 的表分区(水平) 操作记录2
    GraphQl in ASP.NET Core
    初始认知学习 .net core 逐步加深
    C# 关于使用JavaScriptSerializer 序列化与返序列化的操作
    Nginx、IIS 相关命令
    SqlServer:查询指定表所有外键关联表信息
    centos 重启宝塔命令
    c# 根据日志中的方法信息,反射再次执行相关方法
    jackson 下载地址记录
    【设计模式】六大原则
  • 原文地址:https://www.cnblogs.com/BaoZiY/p/11165643.html
Copyright © 2020-2023  润新知