LeetCode-URL化

#LeetCode
面试题 01.03. URL化 - 力扣(LeetCode)

题目描述

![[Pasted image 20231031194140.png]]

解法

初次解法

class Solution {

    public String replaceSpaces(String S, int length) {

        StringBuilder sb = new StringBuilder();

        for(int i = 0;i < length;i ++){

            if(' ' == S.charAt(i)){

                sb.append("%20");

            }else{

                sb.append(S.charAt(i));

            }

        }

        return sb.toString();

    }

}

优化解法

  • 无需额外空间

  • 上面解法没有考虑边界条件

  • ![[Pasted image 20231031210700.png]]

  • ![[Pasted image 20231031210718.png]]

  • 双指针法

class Solution {

    public String replaceSpaces(String S, int length) {

        int stringlen = S.length();

        if(length == 0 || stringlen == 0){

            return S;

        }

        int last = stringlen - 1;

        int pre = length - 1;

        char[] strArr = S.toCharArray();

        while(pre >= 0){

            if(' ' == strArr[pre]){

                    strArr[last] = '0';

                    strArr[last-1] = '2';

                    strArr[last-2] = '%';

                    last -= 3;

                    pre --;

            }else{

                    strArr[last] = strArr[pre];

                    last --;

                    pre --;

            }

        }

        return new String(strArr, last+1, stringlen - last-1);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值