AcWing之找替换空格
生活随笔
收集整理的這篇文章主要介紹了
AcWing之找替换空格
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),把字符串中的每個(gè)空格替換成"%20"。 你可以假定輸入字符串的長(zhǎng)度最大是1000。 注意輸出字符串的長(zhǎng)度可能大于1000。樣例
輸入:"We are happy."輸出:"We%20are%20happy."方法一:
// 時(shí)間復(fù)雜度是 O(n)。class Solution { public:string replaceSpaces(string &str) {string res; //必須新定義一個(gè)res,不能在原來(lái)的str上修改for (auto x: str)if(x == ' ') res+="%20";else res+=x;return res;} };方法二:
class Solution { public:string replaceSpaces(string &str) {int len = 0;for (auto c : str)if (c == ' ')len += 3;elselen ++ ; //計(jì)算長(zhǎng)度int i = str.size() - 1, j = len - 1; //修改指針的位置str.resize(len); //重定義str長(zhǎng)度while (i >= 0){if (str[i] == ' ') //從后往前,當(dāng)str[i] == ' ',則添加{str[j -- ] = '0';str[j -- ] = '2';str[j -- ] = '%';}else str[j -- ] = str[i]; //否則,簡(jiǎn)單的賦值。 str[j--] = str[i] . 把str原來(lái)的值賦值給擴(kuò)建的str后面的i -- ;}return str;} };作者:yxc
鏈接:https://www.acwing.com/solution/AcWing/content/704/
來(lái)源:AcWing
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
心得
方法一: 必須新定義一個(gè)res,不能再原來(lái)的str上修改。
invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
str最終是const,長(zhǎng)度是有限的,不能添加"%20"長(zhǎng)度為3.
見(jiàn)方法二
方法二: 關(guān)鍵在于str進(jìn)行了重新定義長(zhǎng)度。
總結(jié)
以上是生活随笔為你收集整理的AcWing之找替换空格的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 轻松看懂机器学习十大常用算法 - 基础知
- 下一篇: 64位进程隐藏不蓝屏_浅析Linux 6