剑指offer05

1.剑指offer05.替换空格

①解法

注意String类的使用

由于每次替换从 1 个字符变成 3 个字符,使用字符数组可方便地进行替换。建立字符数组地长度为 s 的长度的 3 倍,这样可保证字符数组可以容纳所有替换后的字符。

从左到右遍历字符串 s
获得 s 的当前字符 c
如果字符 c 是空格,则令 array[size] = '%',array[size + 1] = '2',array[size + 2] = '0',并将 size 的值加 3
如果字符 c 不是空格,则令 array[size] = c,并将 size 的值加 1

class Solution {

    public String replaceSpace(String s) {

        int length=s.length();

        char[] array=new char[length*3];

        int size=0;

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

            char c=s.charAt(i);

            if (c==' '){

                array[size++]='%';

                array[size++]='2';

                array[size++]='0';

            }else{

                array[size++]=c;

            }

        }

        String newStr=new String(array,0,size);

        return newStr;



    }

}

②遍历添加

class Solution(object):

    def replaceSpace(self, s):

        """

        :type s: str

        :rtype: str

        """

        res=[]

        for c in s:

            if c == ' ': res.append("%20")

            else: res.append(c)

        return "".join(res)

③双指针

class Solution(object):
    def replaceSpace(self, s):
        """
        :type s: str
        :rtype: str
        """
        counter=s.count(' ')
        res=list(s)
        res.extend([' ']*counter*2)
        left,right=len(s)-1,len(res)-1
        while left>=0:
            if res[left]!=' ':
                res[right]=res[left]
                right-=1
            else:
                res[right-2:right+1]='%20'
                right-=3
            left-=1
        return ''.join(res)
       


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值