请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
数据范围:。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ char* replaceSpace(char* s ) { // write code here int originalLength = strlen(s); //str字符串长度 int count = 0; for (int i = 0; i < originalLength; i++) { if (s[i] == ' ') { count++; } } int newLength = originalLength + count * 2; // 分配新的内存来容纳新字符串 char* newString = (char*)malloc(newLength + 1); if (newString == NULL) { // 如果内存分配失败,返回NULL return NULL; } // 初始化新字符串的指针 char* p = newString; while (*s) { if (*s == ' ') { *p++ = '%'; *p++ = '2'; *p++ = '0'; } else { *p++ = *s; } s++; } *p = '\0'; return newString; }
//C语言发现需要分配很大的预存空间啊! /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ char* replaceSpace(char* s ) { // write code here char ans[10000]={0} ; int i = 0; while (*s != '\0') { if (*s == ' ') { ans[i++]= '%'; ans[i++] = '2'; ans[i++] = '0'; } else { ans[i++] = *s; } s++; } ans[i] = '\0'; return ans; }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ char* replaceSpace(char* s ) { // write code here int sLen = strlen(s); int num = 0; for(int i = 0; i < sLen; i++) { if(s[i] == ' ') num++; } int rLen = sLen + 2*num; char *Rets = (char*)malloc(rLen*sizeof(char)); memset(Rets, 0, rLen); int j = 0; for(int i = 0; i < sLen; i++) { if(s[i] == ' ') { Rets[j++] = '%'; Rets[j++] = '2'; Rets[j++] = '0'; } else Rets[j++] = s[i]; } return Rets; }
char* replaceSpace(char* s ) { // write code here char* ret_char = (char *)malloc(strlen(s)*3); int index = 0; for(int i = 0; i < strlen(s); i++) { if(s[i]==' ') { ret_char[index++] = '%'; ret_char[index++] = '2'; ret_char[index++] = '0'; } else { ret_char[index++] = s[i]; } } return ret_char; }