劍指 2.替換空格
阿新 • • 發佈:2021-01-06
技術標籤:劍指offer資料結構與演算法字串指標演算法c++
題目
思路
字串有足夠的空餘記憶體
先統計空格的個數
替換後的長度 = 原長度 + 空格長度 * 2
從尾部到頭部開始移動
原始碼
class Solution {
public:
void replaceSpace(char *str,int length) {
int spacenum = 0, len = strlen(str);
for (int i = len - 1; i >= 0; i--) {
if (str[i] == ' ') spacenum++ ;
}
int i = len, j = len + spacenum * 2;
for (int i = len; i >= 0; i--) {
if (str[i] == ' ') {
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
} else {
str[j--] = str[i];
}
}
return ;
}
};
其他
char s1 = "hello world";
char s2 = "hello world";
char *s3 = "hello world";
char *s4 = "hello world";
if (str1 == str2) printf("s1 and s2 are same\n");
else printf("s1 and s2 are not same\n");
if (str3 == str4) printf ("s3 and s4 are same\n");
else printf("s3 and s4 are not same\n");
輸出的是 s1 and s2 are not same
和 s3 and s4 are same
;
s1 和 s2 是兩個陣列初始地址不同
s3 和 s4 是兩個指標,都指向 "hello world"這個常量字串所在的記憶體地址。