劍指Offer刷題 2 替換空格

2021-10-05 02:44:33 字數 1220 閱讀 9633

基本思路:

void replacespace(char *str,int length)  else

}cout << result << endl;

}

踩坑

1. 考慮邊界條件,即當字串為空時的情況,其實可用一行python**實現:

class solution:

# s 源字串

def replacespace(self, s):

# write code here

if not s:

return ""

s = s.replace(" ", "%20")

return s

2. c++實現時,原函式中沒有給出輸出或返回,因此可判斷最後需要更改str的值,更改後的**實現如下:

void replacespace(char *str,int length)  else

}// str = result;

strcpy(str, result);

}

3. 指標直接賦值與strcpy的區別:

// 考慮一種簡單的情況

char *p1 = "abcdefg"; // 正確寫法為 const char* p1 = "abcde"

// 不允許變數指標修改常量的值

char *p2;

p2 = p1;

strcpy(p2, p1);

在上述例子中,p2 = p1;表示兩個指標指向同一塊記憶體區域,表示指標的位址賦值。但char *p2; 只是宣告了變數,並沒有對變數分配記憶體空間,因此不能直接執行strcpy(p2, p1),該函式執行的是將記憶體中的一部分內容拷貝到另一部分記憶體區域。

可按照以下的方式修改,先給指標分配空間,再執行字串拷貝。

p2 = (char*)malloc (sizeof(char) * strlen(p1) )

strcpy(p2, p1)

4. 陣列指標與陣列首位址的關係

5. 指標指向字串陣列的情況,考慮以下例子

#include #include using namespace std;

void replace(char *str)

int main()

劍指offer刷題(二)替換空格

題目思路1 建立新字串 建立乙個新字串ss,遍歷原字串,如果遇到空格則將 20 加入新字串,否則將遍歷到的非空字元加入新字串ss class solution s 源字串 defreplacespace self,s ss for i in s if i ss 20 else ss i return...

劍指offer 空格替換 2

public class solution 方法二 新建stringbuffer拼接 public class solution else return result.tostring 附加 string 字串常量 string的值是可變的,每次的操作都會建立新的物件,很浪費空間。stringbuf...

劍指offer 題5 替換空格

題目 首先拿到題目,第一感覺就是乙個 空格 變成了 20 那字串長度肯定變長啊 所以我第一反應是建立新的字串b,然後從a乙個個讀取字元,遇到 空格 就用 20 來替代,只要b空間足夠,遍歷一遍就成了。但是,面試再簡單也不是考這種題目。於是這時候面試官可能會講了 要求在原來的字串上進行操作 這時候問題...