剑指offer 5:替换空格

题目描述:

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

例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

数据范围:0<=len(s)<=1000。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

进阶:时间复杂度O(n)  ,空间复杂度 O(n) 

示例1

输入:"We Are Happy"

返回值:"We%20Are%20Happy"

示例2

输入:" "

返回值:"%20"

解法一:StringBuffer/StringBuilder

思路:

遍历数组:

  • 如果当前位置的值是空格,则替换为%20
  • 如果当前位置的值不是空格,则直接append(s.charAt(i))

代码:

import java.util.*;
public class Solution {
    public String replaceSpace (String s) {
        StringBuffer sb = new StringBuffer();
        for(int i=0; i < s.length(); i++){
            char c = s.charAt(i);
            if(s.charAt(i) == ' '){
                 sb.append("%20");
            }else{
                sb.append(c);
            }
        }
        return sb.toString();
    }
}

解法二:队列

思路:

思路基本和解法一一致。

代码:

import java.util.*;
public class Solution {
    public String replaceSpace (String s) {
        Queue<String> queue = new LinkedList<>();
        //遍历字符串,入栈
        for(int i=0; i < s.length(); i++){
            char c = s.charAt(i);
            if(s.charAt(i) == ' '){
                 queue.offer("%20");
            }else{
               queue.offer(c+"");
            }
        }
        //出队拼接字符串
        StringBuffer sb = new StringBuffer();
        while(queue.size() > 0){
            sb.append(queue.poll());
        }
        return sb.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_47382783/article/details/121416049