核心考點:字串相關,特性觀察,臨界條件處理
請實作一個函式,將一個字串中的每個空格替換成"%20",例如,字串We Are Happy經過替換之后的字串為We%20Are%20Happy,
決議:
替換空格大致可分為以下三個步驟:
1、遍歷一遍字串,統計字串當中的空格數count,
2、通過空格數count算出替換后字串的新長度newlength,
因為一個空格字符會被替換為三個字符,所以替換后字串的新長度newlength = length + 2*count,
3、從后向前對字串進行填充,
計算出替換后字串的長度后,我們可以在原字串當中,從后往前進行填充,若遇到的不是空格,則將遍歷到的字符從后往前進行填充,

若遇到的是空格,則從后往前填充字符’0’,‘2’,’%’,

如此進行下去,直到字串遍歷完畢即可得到替換后的字串,

class Solution {
public:
void replaceSpace(char *str, int length) {
int count = 0; //記錄字串中空格的個數
//遍歷字串,統計字串當中的空格數
for (int i = 0; i < length; i++)
{
if (str[i] == ' ')
count++;
}
//計算替換后字串的新長度
int newlength = length + 2 * count;
//從后向前對字串進行填充
while (newlength >= 0)
{
if (str[length] == ' ') //遇到的是空格,則從后往前填充字符'0','2','%'
{
str[newlength--] = '0';
str[newlength--] = '2';
str[newlength--] = '%';
}
else //遇到的不是空格,則將遍歷到的字符從后往前進行填充
{
str[newlength--] = str[length];
}
length--;
}
}
};
說明一下:
因為所給函式介面沒有使用參考傳參,所以我們無法在函式體內部對字串進行增容操作,在此我們只能將引數length理解為需要我們進行替換的字串長度,而默認字串已經為我們預留了足夠的空間大小進行空格替換,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/298699.html
標籤:其他
