劍指Offer(二):替換空格

1、前言

刷題平臺:牛客網php

2、題目

請實現一個函數,將一個字符串中的空格替換成「%20」。例如,當字符串爲We Are Happy.則通過替換以後的字符串爲We%20Are%20Happy。html

一、思路

最簡單的方法就是從頭至尾遍歷,可是時間複雜度爲O(n^2)。編程

本文采用一種時間複雜度爲O(n)的方法。app

咱們能夠先遍歷一次字符串,這樣就能夠統計出字符串空格的總數,並能夠由此計算出替換以後的字符串的總長度。每替換一個空格,長度增長2,所以替換之後字符串的長度等於原來的長度加上2乘以空格數目。以"We are happy"爲例,"We are happy"這個字符串的長度爲14(包括結尾符號"\n"),裏面有兩個空格,所以替換以後字符串的長度是18。函數

咱們從字符串的尾部開始複製和替換。首先準備兩個指針,P1和P2,P1指向原始字符串的末尾,而P2指向替換以後的字符串的末尾。接下來咱們向前移動指針P1,逐個把它指向的字符複製到P2指向的位置,直到碰到第一個空格爲止。碰到第一個空格以後,把P1向前移動1格,在P2以前插入字符串"%20"。因爲"%20"的長度爲3,同時也要把P2向前移動3格。ui

移動示意圖:url

劍指Offer(二):替換空格

二、編程實現

Python3:spa

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return s.replace(' ', '%20')

 轉載自:劍指Offer(二):替換空格 | Jack Cui指針

相關文章
相關標籤/搜索