题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:知识盲点==char类型的指针char* str,结尾的都是' ',string结尾的也可能是' ';char是内置类型,作为一个指针的时候不能指向string这种有class的对象。
string str{ "string" }; char word; vector<char> vec{ 'n','i' }; char * test = &vec[0]; vec[0] = '0'; cout << vec[0]; for each(word in str) { cout << word; }
vector<char>里面只能初始化为'a' 这样的,不要初始化为“”“”,后面的这种事字符串。vector类型的使用指针的时候,要指向第一个元素的地址。string末尾没有' '。
字符串数组可以直接进行修改,vec[0 = '0',但是如果是char* p = "string",这种就不能对内容进行修改,因为字符串string是一个常量,规定不能对常量进行修改,要修改必须先转化为数组才能进行修改。
使用字符串常量对字符数组进行初始化的时候,系统会自动在末尾加上字符串结尾符号' ',但是定义的字符数组必须要有足够的长度。比如char p[] = "new",那么数组的长度要加上结束符号,就是len = 4;
这道题目一定要画图。
注意点1:统计空格长度的时候要复制一个指针,那个接口的length是指string的最大能开辟的长度。
注意点2:两个指针复制时,结束的条件是p1 == p2。
char *s;如果s == null,那么是不能对s进行*操作的。
class Solution { public: void replaceSpace(char *str,int length) { if(str == NULL || length <= 0){ return; } int num = 0,oldLen = 0; char *tmp = str; while(*tmp != '