劍指offer(4)替換空格

2021-09-24 21:37:21 字數 515 閱讀 9145

看到替換,我們首先應該想到的是原來乙個空格字元,替換之後變成』%』、'2』和』0』這3個字元,因此字串會變長。

首先我們要向面試官詢問是新建字串還是在原有字串上面修改,本體要求是在原有字串上進行修改。

思路1:如果從前到後遍歷,遇到空格,就替換(空格後面字元需要自後向前向後移動兩個空格),那麼時間複雜度是o(n2)

思路2:先從前向後遍歷,查出有多少個空格(目的是知道每個空格後面的字元需要移動多少位)。再從後向前遍歷

//二分法

public boolean find(int target, int array) else if (array[i][mid] < target) else

} }return false;

}

//以右上角為例

public boolean find(int target, int array)

return false;

}

劍指offer 4 替換空格

1.c c 中每個字串都以字元 0 作為結尾。string s a coutcoutcout2.當幾個指標賦給相同的常量字串時,它們實際上會指向相同的記憶體位址。但用常量記憶體初始化陣列,情況卻有所不同。char c1 a char c2 a char c3 a char c4 a cout c1 ...

劍指offer 4 替換空格

該問題如果採用暴力方法 從前往後遍歷,如果遇到空格,開始整體資料向後移動2位,插入 20,一直到結束。採用這樣的方法,時間複雜度為o n 2 o n 2 o n2 比較耗時間,也不是理想的方案。上面的方案,可以看出有很大的改進空間,如果知道了空格的個數,直接從後往前遍歷,這樣每個元素都能放到最終位置...

劍指offer 替換空格

思路 首先遍歷字串,找出空格的數量countspace,計算變換後的總長為newlength str.length 2 countspace。定義心得字元陣列,長度為newlength 從字串的後面開始複製和替換,如果不是空格,就複製,如果是空格,就變為 20.難點 牛客網上傳入引數是stringb...