程式設計師面試金典第一章 陣列與字串(4) 空格替換

2021-07-25 20:00:19 字數 937 閱讀 4790

1.1 題目描述

請編寫乙個方法,將字串中的空格全部替換為「%20」。假定該字串有足夠的空間存放新增的字元,並且知道字串的真實長度(小於等於1000),同時保證字串由大小寫的英文本母組成。

給定乙個string inistring 為原始的串,以及串的長度 int len, 返回替換後的string。

測試樣例:

「mr john smith」,13

返回:」mr%20john%20smith」

」hello world」,12

返回:」hello%20%20world」

1.2解題思路

思路1:先遍歷原來的字串,找出空格的個數count, 從而得出新的字串長度newlength = length + 2 * count,最後從後向前寫入字元,如果是空格,那麼寫入%20,否則寫入原字元

時間複雜度o(n) 空間複雜度o(1)

class replacement 

if(spacecount == 0)

return inistring;

int newlength = length + 2 * spacecount;

inistring.resize(newlength + 1);

inistring[newlength] = '\0';

for(int i = length - 1; i >= 0 && newlength - 1 > i; --i)

else

}return inistring;

}};};

tips:1.長度為0,直接返回

2.沒有空格,直接返回

3.別忘記在新的末尾加上『\0』

4.當當前需要寫入的位置與length一致,說明前面沒空格,可以直接結束

程式設計師面試金典第一章 陣列與字串(7)清除行列

1.1 題目描述 請編寫乙個演算法,若n階方陣中某個元素為0,則將其所在的行與列清零。給定乙個n階方陣intmat和矩陣的階數n,請返回完成操作後的int方陣 c 中為vector 保證n小於等於300,矩陣中的元素為int範圍內。測試樣例 1,2,3 0,1,2 0,0,1 返回 0,0,3 0,...

《王道程式設計師求職寶典》第一章 陣列

一些基本概念 1.c 內建型別 分為基本型別和復合型別。基本型別包括整數 浮點數及兩者的多種變體。復合型別包括陣列 字串 指標 引用 結構體和共用體等 2.記憶體分割槽 1 堆 由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc或者new來分配,free和dele...

《程式設計師面試金典》 反轉字串

題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 redocwon si s...