日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python剑指offer替换空格_《剑指offer》2-替换空格【Java+Python】

發(fā)布時(shí)間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python剑指offer替换空格_《剑指offer》2-替换空格【Java+Python】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

替換空格

1. 題目描述

請實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。

2. 示例

例如,當(dāng)字符串為We Are Happy.則經(jīng)過替換之后的字符串為We%20Are%20Happy。

3. 解題思路

此題比較簡單

第一種方法:新開一個(gè)內(nèi)存空間,遍歷原字符串?dāng)?shù)組,如果碰到字符為空格,則append %20進(jìn)新的空間

第二種方法:不開辟新的空間,首先統(tǒng)計(jì)空格數(shù)量,從而計(jì)算出新的空間大大小,從后面往前面移動(dòng)。

4. Java實(shí)現(xiàn)

方法一:新開一個(gè)內(nèi)存空間

// 新開一個(gè)內(nèi)存空間

public class Solution {

public String replaceSpace(StringBuffer str) {

//創(chuàng)建一個(gè)新的空間

StringBuffer out = new StringBuffer();

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

char a = str.charAt(i);

if (a == ' '){

out.append("%20");

}else{

out.append(a);

}

}

return out.toString();

}

}

方法二:不開辟新的空間,從后面往前面移動(dòng)

public class Solution {

public String replaceSpace(StringBuffer str) {

// 計(jì)算空格的數(shù)量

int spaceNum = 0;

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

char a = str.charAt(i);

if (a == ' '){

spaceNum ++;

}

}

// 開辟空間

int oldIndex = str.length()-1; // 原字符串的下標(biāo)

int newLength = str.length() + spaceNum * 2;

int newIndex = newLength -1;

str.setLength(newLength); // 重新設(shè)置字符串的長度

while(newIndex >= 0){

if (str.charAt(oldIndex) != ' '){

str.setCharAt(newIndex, str.charAt(oldIndex));

oldIndex --;

newIndex --;

}else{

str.setCharAt(newIndex--, '0');

str.setCharAt(newIndex--, '2');

str.setCharAt(newIndex--, '%');

oldIndex--; // 只進(jìn)行一次減 1

}

}

return str.toString();

}

}

5. Python實(shí)現(xiàn)

方法一:下列的字符串是 不可變對象,使用 + 操作時(shí),會產(chǎn)生許多的對象,所以最好使用第二種方法

class Solution():

def replaceSpace(self, s):

if type(s) != str:

return

new_s = ''

for sr in s:

if sr == ' ':

new_s += '%20'

else:

new_s += sr

return new_s

so = Solution()

s = ' ab c d e '

print(so.replaceSpace(s))

# %20ab%20c%20d%20e%20

print(s.replace(' ', '%20'))

方法二:轉(zhuǎn)換成列表形式

class Solution:

def replaceSpace(self, s):

if type(s) != str:

return

li = list(s)

for i in range(len(li)):

if li[i] == ' ':

li[i] = '%20'

res = "".join(li)

return res

so = Solution()

s = ' ab c d e '

print(so.replaceSpace(s))

如果您覺得本文有用,請點(diǎn)個(gè)“在看”

總結(jié)

以上是生活随笔為你收集整理的python剑指offer替换空格_《剑指offer》2-替换空格【Java+Python】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。