Lc_剑指Offer05替换空格
  TEZNKK3IfmPf 2023年11月14日 26 0
package com.leetcode.leetcode.licm;

/**
 * @description: 剑指 Offer 05. 替换空格
 * 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入:s = "We are happy."
 * 输出:"We%20are%20happy."
 * <p>
 * <p>
 * 限制:
 * <p>
 * 0 <= s 的长度 <= 10000
 * @author: licm
 * @create: 2021-07-12 10:47
 **/
public class Lc_剑指Offer05替换空格 {
    /**
     * * 第一步 检索当前字符串有多少个空格,然后进行扩容
     * <p>
     * 第二部 将空格从后向前替换,利用双指针
     *
     * @param s
     * @return
     */
    public static String replaceSpace(String s) {
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ' ') {
                count++;
            }
        }

        char[] charS = s.toCharArray();
        char[] newCharS = new char[charS.length + count * 2];
        for (int i = charS.length - 1; i >= 0; i--) {
            newCharS[i] = charS[i];
        }

        int left = charS.length - 1;
        int right = newCharS.length - 1;
       while(left<right) {
            if (newCharS[left] == ' ') {
                newCharS[right] = '0';
                newCharS[right - 1] = '2';
                newCharS[right - 2] = '%';
                right -= 2;

            } else {
                newCharS[right] = newCharS[left];
            }
            left--;
            right--;
        }
        String newStr = new String(newCharS, 0, newCharS.length);
        return newStr;
    }

    public static void main(String[] args) {
        String s = "We are happy.";
        System.out.println(replaceSpace(s));
    }
}

不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月12日   35   0   0 算法leetcodeC++
  TEZNKK3IfmPf   2024年03月29日   65   0   0 leetcode字符
  TEZNKK3IfmPf   2024年04月19日   51   0   0 leetcode位运算
TEZNKK3IfmPf