1. 程式人生 > 其它 >劍指 2.替換空格

劍指 2.替換空格

技術標籤:劍指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 sames3 and s4 are same;
s1 和 s2 是兩個陣列初始地址不同
s3 和 s4 是兩個指標,都指向 "hello world"這個常量字串所在的記憶體地址。