劍指Offer,面試題4,替換空格,Java寫法
題目:請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。
思路就是如果從左到右去插入的話,時間複雜度為O(n2),先確定空格的個數,然後確定替換後的String長度,從右到左插入的話時間複雜度為O(n)
簡單的,但時間複雜度高的程式碼:
我的程式碼:public class Solution { public String replaceSpace(StringBuffer str) { return str.toString().replaceAll("\\s", "%20"); } }
public class Solution { public String replaceSpace(StringBuffer str) { int originalLength = str.length()-1; //字串str原長度 int numberOfBlank = 0; //空格的個數 //int i = 0; for(char c : str.toString().toCharArray()){ if (c == ' '){ numberOfBlank++; } } int newLength = originalLength + numberOfBlank*2+1; str.setLength(newLength); newLength = newLength-1; while (originalLength >= 0 && newLength > originalLength){ if (str.charAt(originalLength) == ' '){ str.setCharAt(newLength--,'0'); str.setCharAt(newLength--,'2'); str.setCharAt(newLength--,'%'); }else{ str.setCharAt(newLength--,str.charAt(originalLength)); } originalLength--; } return str.toString(); }
public static void main(String args[]){
StringBuffer str = new StringBuffer();
str.append(" helloworld");
}
}
相關推薦
劍指Offer,面試題4,替換空格,Java寫法
題目:請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 思路就是如果從左到右去插入的話,時間複雜度為O(n2),先確定空格的個數,然後確定替換後的String長度,從右到左插
【劍指offer】面試題 5. 替換空格
pla AC append replace for turn app null string 面試題 5. 替換空格 題目:請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy. 則經過替換之後的字符串為We%20Are%2
【劍指offer】面試題4:替換空格 java
題目: 請實現一個函式,把字串中的每個空格替換成“20%”。例如輸入“We are happy.”,則輸出“We%20are%20happy.”。 public class Replace { public Replace() { // TODO Auto-gener
【劍指offer】面試題 4.二維數組中的查找
這樣的 || int targe arr find off col lean 面試題 4. 二維數組中的查找 題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組
劍指offer:面試題4
面試題4:如果直接每次遇到空格新增’%20’,那麼空格後面的數字就需要頻繁向後移動。遇到這種移動問題,我們可以嘗試先給出最終需要的長度,然後從後向前掃描,同時給定兩個指標來保證定位。逆向思維 編譯器:python3.5.2 程式設計環境:pycharm2018.1.2x6
【劍指offer】 面試題4 二維陣列中的查詢
題目: 在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下的遞增的順序排序,請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 解題思路 關鍵是,我們從哪裡開始查詢? 如果是從頭開始查,那麼所查之數比陣列當前遍歷元素大的話,我們怎
《劍指offer》面試題4:二維陣列中的查詢
題目: 在一個二維陣列中,每一行都按照從左到右遞增的順序排列,每一列都按照從上到下遞增的順序排列。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 查詢規則:首先選取陣列中右上角的數字。如果該數字等於要查詢的數字,則查詢過程結束;如果
劍指Offer面試題4 替換空格
題目要求:請實現一個函式,把字串中的每個空格替換成"%20"。例如輸入"We are happy.",則輸出"We%20are%20happy." 解題思路1:在原有的字串上進行替換,將原來的一個空格替換成"%"、"2"、"0"這3個字元(字串會因此變長,我們要保證原有的字串後面有足夠多的空餘記
劍指offer面試題4—替換空格
題目比較簡單,把字串中的空格替換為相應的字串 如果從前開始迴圈替換,每移動一個元素,後面的資料都需要移動,因此選用的方法應該是從後面行前替換 #include "static.h" #include <iostream> using namespace std;
Java《劍指Offer》面試題2:替換空格
替換空格 題目描述:請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 思路:建立StringBuffer物件,然後將StringBuffer物件轉成字串物件,接著呼叫字串物件的replace方法,將空格
《劍指offer》面試題39 二叉樹的深度(java)
設計模式 博客 rgs 歷史 存在 復制 pri 取值 今天 摘要: 今天翻到了《劍指offer》面試題39,題目二中的解法二是在函數的參數列表中通過指針的方式進行傳值,而java是沒有指針的,所以函數要進行改造。然而我翻了下別人的java版本(我就想看看有什麽高大上的改造
《劍指offer》 面試題43 n個骰子的點數 (java)
r+ nal ret 次循環 分而治之 源碼 ava 面試 ble 引言:寫這篇文章的初衷只是想做個筆記,因為這道題代碼量有點大,有點抽象,而書上並沒有詳細的註釋。為了加深印象和便於下次復習,做個記錄。 原題:把n個骰子扔到地上,所有骰子朝上一面的點數之後為s. 輸入n,打
【劍指offer】面試題 2. 實現 Singleton模式
模式 試題 枚舉 生成 test hand true 方法 單例模式 面試題 2. 實現 Singleton模式 題目:設計一個類,我們只能生成該類的一個實例。 單例模式:確保一個類只有一個實例,並提供了一個全局訪問點。 Code 1.餓漢模式 //餓漢模式 publ
【劍指offer】面試題 11. 旋轉數組的最小數字
最小數 urn 數字 number ret .so 所有 ID 元素 面試題 11. 旋轉數組的最小數字 題目描述 題目:把一個數組最開始的若幹個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉, 輸出旋轉數組的最小元素。 例如數組{3
【劍指offer】面試題 28. 對稱的二叉樹
fin 技術分享 root 實現一個函數 面試題 分享 inf right png 面試題 28. 對稱的二叉樹 題目描述 題目:請實現一個函數,用來判斷一顆二叉樹是不是對稱的。註意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。 解答過程 給定一個二叉
【劍指offer】面試題 29. 順時針打印矩陣
如果 clas for 輸入 offer ID amp 代碼實現 AR 面試題 29. 順時針打印矩陣 題目描述 題目:輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 1
【劍指offer】面試題 49. 醜數
als pre ID offer get 素因子 ole bool 第一個 面試題 49. 醜數 題目描述 題目:把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含因子7。 習慣上我們把1當做是第一個醜數。求按
《劍指offer》面試題10:斐波那契數列
題目一:求斐波那契數列的第n項 寫一個函式,輸入n,求斐波那契(Fibonacci)數列的第n項。斐波那契數列的定義如下: 當n=0時,f(n)=0; 當n=1時,f(n)=1; 當n>1時,f(n)=f(n-1)+f(n-2); 從下往上計算,首先根據 f(0)和 f(
《劍指offer》面試題32:從上到下列印二叉樹
題目一:不分行從上到下列印二叉樹 從上到下打印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。 二叉樹節點的定義如下: struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNo
《劍指offer》面試題9:用兩個棧實現佇列
題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail 和deleteHead ,分別完成在佇列尾部插入節點和在佇列頭部刪除節點的功能。 template <typename T> class CQueue { public: CQueue(vo