請實現一個函數,將一個字符串中的每個空格替換成「%20」
。例如,當字符串爲We Are Happy.
則經過替換之後的字符串爲We%20Are%20Happy
。
最簡單的方法就是從頭到尾遍歷,但是時間複雜度爲O(n^2)。
本文采用一種時間複雜度爲O(n)的方法。
我們可以先遍歷一次字符串,這樣就可以統計出字符串空格的總數,並可以由此計算出替換之後的字符串的總長度。每替換一個空格,長度增加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格。
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' @File : array_01.py @Author: Piepis @Date : 2019/3/25 10:47 @Desc : 去除空格 ''' class Solution: # s 源字符串 def replaceSpace(self, s): # write code here t=s.replace(' ','%20') return print(t) s='We Are Happy.' a=Solution() a.replaceSpace(s)