字符串下划线替换-不开辟新的内存
来源:互联网 发布:手写软件泼墨转换器 编辑:程序博客网 时间:2024/06/05 18:23
面试题:处理一个字符串,把字符串中的'_'替换成'%A2',该字符串大空间足够大。要求不开辟新的内存。
比如str[23]="abc_de__h"
处理后:"abc%A2de%A2%A2h"
思路:先把字符串的长度求出来为len.再把'_'个数num求出来,新的数字占用内存为len+num*2.接下来就能够进行替换了。
代码如下:
#include <iostream>
#include <string>using namespace std;
void rep(char *p){
int len = strlen(p);
int num=0,newLen,pos,end;
cout<<len;
//get the number of '_'
//"abc_de__h";
for(int i=0; i<9; i++){
if (p[i] == '_'){
num++;
}
}
//move *pos to the new end
newLen = strlen(p)+2*num; //new memory
pos = len ;
end = newLen ;
//Move number from end to begin
while(pos != end)
{
if ( p[pos] != '_')
{
p[end--] = p[pos--];
}
else{ //if *p == '_' replace %A2 to '_'
p[end--] = '2';
p[end--] = 'A';
p[end--] = '%';
pos --;
}
}
}
int main(){
char strs[256] = "abc_de__h";
rep(strs);
cout<<"newstr:"<<strs;
return 0;
}
0 0
- 字符串下划线替换-不开辟新的内存
- 字符串替换(新开辟空间)
- N*N矩阵的旋转 不开辟新空间
- 开辟新的生活
- 开辟新的天地
- linux的内存开辟
- 链表反转不开辟新空间
- C++动态内存的开辟
- 开辟新战场,打造新的商业模式
- java n*n的二维数组转置,不开辟新的空间
- 对字符串编辑,替换颜色,下划线。
- 【美团面试】不开辟新的内存空间实现数组去重
- 逆向工程核心原理学习笔记(六):实战开辟新内存区域写入缓冲区跳转修改字符串
- 逆向工程核心原理学习笔记(六):实战开辟新内存区域写入缓冲区跳转修改字符串
- 字符串替换新单词
- 不开辟用于交换数据的临时空间,完成字符串的逆序
- 不开辟用于交换数据的临时空间完成字符串的逆序
- 不开辟用于交换数据的临时空间,如何完成字符串的逆序
- 记录一次给Apache服务器添加SSL(https)的过程,包括集成mod_jk与Tomcat使用https
- WebRTC代码走读(三):音频接收流程
- 一点数论题目
- 更新两张表中A表A字段与B表A字段相同,把B表B字段更新到A表A字段
- 绘制图形(从零开始学Android)
- 字符串下划线替换-不开辟新的内存
- ZOJ Problem Set - 3498||Javabeans
- ThinkPHP的路径模式以及程序运行路线
- 欧拉函数
- 文本分类入门-特征选择方法之信息增益
- django bulk_create的问题
- ccs5.4 beagleborad xm DSP单核
- 线程池深入理解
- python logging 最佳实践