• Java 替换空格


    题目描述

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

    解一:

    由于最近在学习Head First Java,所以最先考虑到的就是使用字符串拼凑,思路很简单,没有考虑什么时间复杂度,直接看代码。

     1 public class Solution {
     2     public String replaceSpace(StringBuffer str) {
     3         String str1=str.toString();
     4         char[] charArray = str1.toCharArray();
     5         StringBuilder sBuilder = new StringBuilder();
     6         for (char c : charArray) {
     7             if(c==' ') {
     8             sBuilder.append("%20");    
     9             }else {
    10                 sBuilder.append(c);
    11             }
    12         }
    13         String string = sBuilder.toString();
    14         return string;
    15     }
    16 }

    解二:这个方法是借鉴网上别人的思路,自己理解了然后实现出来了。

    思路:从字符串的后面开始复制和替换,首先准备两个指针,p1和p2,p1指向原始字符串的末尾,p2指向替换后字符串的末尾,接下来,向前移动指针p1,逐个把它指向的字符复制到p2,碰到一个空格之后,把p1向前移动1格,在p2处插入字符串“20%”,由于“20%”长度为3,同时也要把p2向前移动3格。直到p1=p2,表明所有空格都已经替换完毕。

     

     1 public class ReplaceSpace {
     2 
     3     public static void main(String[] args) {
     4         Scanner scanner = new Scanner(System.in);
     5         String str=scanner.nextLine();
     6         scanner.close();
     7         char[] charArray = str.toCharArray();
     8         int length=charArray.length;
     9         int spaceNumber=0;//获取空格数量
    10         for (char c : charArray) {
    11             if(c==' ') {
    12             spaceNumber++;
    13             }
    14         }
    15         int newLength=length+spaceNumber*2;
    16         char[] tempArray=new char[newLength];//新的数组的长度
    17         System.arraycopy(charArray, 0, tempArray, 0, length);//将原来的数组拷贝到新长度的数组中
    18         int indexofOriginal = length - 1;  
    19         int indexofNew = newLength - 1;  
    20         while (indexofOriginal>=0&&indexofOriginal!=indexofNew) {
    21             if (tempArray[indexofOriginal]==' ') {
    22                 tempArray[indexofNew--] = '0'; 
    23                 tempArray[indexofNew--] = '2';
    24                 tempArray[indexofNew--] = '%';
    25             }else {
    26                 tempArray[indexofNew--] = tempArray[indexofOriginal];
    27             }
    28             indexofOriginal--;
    29             
    30         }
    31         for (char c : tempArray) {
    32             System.out.print(c);
    33         }
    34     }
    35 
    36 }

     


  • 相关阅读:
    css 字体相关属性的设置
    flex 三列布局
    python shelve模块
    python collections模块
    Python shutil模块,高级文件管理
    python中os模块的常用
    python中hashlib加密模块和sys系统模块
    logging日志模块
    random模块常用方法
    序列化json和pickle模块
  • 原文地址:https://www.cnblogs.com/wangjiangwu/p/5782309.html
Copyright © 2020-2023  润新知