剑指offer-字符串
来源:互联网 发布:数据帧的长度计算公式 编辑:程序博客网 时间:2024/05/20 01:36
1、常量字符串
为了节省内存,C++会把常量字符串放到单独一个内存区域。当有指针赋值给相同常量字符串时,他们会指向相同的内存地址。
int main(){ char str1[] = "hello world"; char str2[] = "hello world"; if(str1 == str2) cout<<"str1 and str2 are same"<<endl; else cout<<"str1 and str2 are not same"<<endl; string str3 = "hello world"; string str4 = "hello world"; if(str3 == str4) cout<<"str3 and str4 are same"<<endl; else cout<<"str3 and str4 are not same"<<endl; return 0;}
输出为:
str1 and str2 are not same
str3 and str4 are same
str1和str2是两个字符串数组,C++会分配两个长度为12的字节空间。这是两个初始地址不同的数组,因此str1和str2不同
str3和str4是两个字符串指针,无需分配内存就可以指向常量字符串,所以指向的是同一内存地址,得到的结果相同。
2、替换空格
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
算法:
首先统计空格个数,因为是1个字符->3个字符,所以新字符串长度=原字符串长度+2*空格个数,再进行从后向前复制即可。
class Solution {public: void replaceSpace(char *str,int length) { char *p = str; int n = 0; int count = 0; while(*p!='\0'){ if(*p == ' ') n++; p++; count++; } count++; char *q = p + 2 * n; while (count != 0) { if(*p == ' '){ *q = '0'; q--; *q = '2'; q--; *q = '%'; } else{ *q = *p; } q--; p--; count--; } }};
0 0
- 剑指offer:字符串排列
- 剑指offer 字符串
- 剑指offer--字符串
- 剑指offer-字符串
- 剑指offer--字符串排列
- 剑指Offer-字符串
- 【剑指offer】替换字符串
- 剑指Offer 字符串排序
- 剑指offer-字符串替换
- 【剑指offer】字符串的排列
- 【剑指offer】字符串的组合
- 【剑指offer】左旋转字符串
- 【剑指offer】字符串转整数
- 剑指offer--左旋转字符串
- 剑指offer--字符串的排列
- 《剑指offer》字符串的排列
- 《剑指offer》左旋转字符串
- 【剑指Offer】字符串的排列
- Sql的左外连接,右外连接,全连接,内连接
- 算法:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
- Android4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比
- OpenCV_(3):编程辅助函数
- caffe 命令行解析
- 剑指offer-字符串
- Favicon.ico
- 先验概率和后验概率
- 驱动程序-字符驱动
- 【Unity闲谈】如何把写好的插件卖到AssetStore
- 分布式文件系统—FastDFS
- C++ no debugging symbol found
- Hibernate——搭建
- opencv 解决vs2013 opencv3.0 0xC000007b运行错误问题