替換空格 將一個字串中的空格替換成“ ”
題目描述
請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。
第一次看到的時候,以為看錯了,這也忒簡單了,python 的replace,java的replaceAll,輕鬆完成!
當然,不可能那麼簡單的。
演算法菜鳥還是看看別人的思路吧,真的是佩服,哎,演算法之路漫漫!
思路:先計算原字串中空格的數量,然後計算新字串的長度,這裡的新不是新分配空間,而是在原來的基礎上,加上%20佔的空間。然後從後往前替換,為什麼從後往前呢,因為如果從前往後替換,每次遇到空格,後面的字元都要往後移動,這效率就低了。從後往前就沒這個問題,因為後面的都是空閒空間,資料不會丟失。
好了,本來用python寫的,但是,除錯的時候有個問題,因為新字串的長度要更長,不知道怎麼像java setlength那樣子改變字串的長度,就只能用java了。這是別人寫好的,按照思路自己寫了一下。
public class Solution {
public String replaceSpace(StringBuffer str) {
int spacenum = 0;//spacenum為計算空格數
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' ')
spacenum++;
}
int indexold = str.length()-1; //indexold為為替換前的str下標
int newlength = str.length() + spacenum*2;//計算空格轉換成%20之後的str長度
int indexnew = newlength-1;//indexold為為把空格替換為%20後的str下標
str.setLength(newlength);//使str的長度擴大到轉換成%20之後的長度,防止下標越界
for(;indexold>=0 && indexold<newlength;--indexold){
if(str.charAt(indexold) == ' '){ //
str.setCharAt(indexnew--, '0');
str.setCharAt(indexnew--, '2');
str.setCharAt(indexnew--, '%');
}else{
str.setCharAt(indexnew--, str.charAt(indexold));
}
}
return str.toString();
}
}
相關文章
- javascript將字串中的多個空格替換為一個空格的正則例項JavaScript字串
- Problem 4:替換空格(字串)字串
- js替換字串裡的空格JS字串
- 【劍指offer】替換字串中的空格字串
- 替換字串中的空格《演算法很美》字串演算法
- C++ 中的替換空格C++
- 劍指offer-字串空格替換為“ ”字串
- [每日一題] 第十題:替換空格每日一題
- 第五章 字串專題 ---------------- 5.4 實踐:替換字串中的空格字串
- 正則替換 修改字元 去除空格字元
- 演算法學習記錄二(C++)--->字串空格替換演算法C++字串
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- Vi中的替換字串字串
- JavaScript將字串中的多個空格縮減為一個空格JavaScript字串
- python如何將字串中的所有"you"替換成"we"Python字串
- 替換SQL欄位中的換行符,回車符,空格等特殊符號SQL符號
- js replace替換字串,同時替換多個方法JS字串
- sed 字串替換字串
- ACM 字串替換ACM字串
- javascript替換字串中的某個漢字JavaScript字串
- php中幾個字串替換函式PHP字串函式
- 字串的一個操作(替換類似陣列字串中的項)字串陣列
- js中字串的替換JS字串
- vi替換字串(zz)字串
- POJ 3981 字串替換字串
- js字串中替換指定的的字元JS字串字元
- 《Cracking the Coding Interview程式設計師面試金典》----空格替換View程式設計師面試
- 將字串中的空格用 代替字串
- js中字串全部替換JS字串
- Linux vi替換字串Linux字串
- 字串查詢和替換字串
- mysql批量替換指定字串MySql字串
- C# 字串中多個連續空格轉為一個空格C#字串
- javascript如何替換字串中的指定內容JavaScript字串
- js替換字串中的所有指定內容JS字串
- 如何將Windows的桌面替換成自己的程式Windows
- linux中批量替換文字中字串Linux字串
- 練習1-20 編寫程式detab:將輸入的製表符替換成適當數目的空格,使空格充滿到下一個製表符終止位的地方