1. 字符串 String
在C语言中使用的char类型的数组在C++中被封装成 string 类型,并且提供了许多方便的操作函数。
1.1 String基础内容
小技巧
String
String API 抽空补充一下。
1.2 String 题目类型说明
小技巧
从string的基础特性来考察,string是变种数组,基本拥有数组的操作,还更多的拥有字符的特性:匹配、排序、字典序等。
分类:
顺序
反转
翻转
包含
统计
匹配
回文
字串
子序列
字典序
1.3 String经典题目
1.3.1 面试题05:替换空格
题目如下:
请实现一个函数,把字符串 s 中的每个空格替换成"%20".
输入:s = "We are happy."
输出:"We%20are%20happy."
实现思路:
step1、不构建新字符,添加空字符进行修改,遇到一个空格就在末尾+2空格
step2、倒序遍历
1)当遇到普通字符时候,将s[j]赋值给尾指针s[i],然后尾指针-1,这里简写成 s[i--] = s[j]
2)当遇到空格时候,需要替换成制定字符,将 s[i--] = ''重复即可
string replaceSpace(string s) {
int length = s.size();
for(int i = 0; i < length; i++){
if(s[i] == ' '){
s += " ";
}
}
int i = s.size() - 1; // 指向末尾
for(int j = length - 1; j >= 0; j--){ // 指向原有字符串结尾
if(s[j] == ' '){
s[i--] = '0';
s[i--] = '2';
s[i--] = '%';
} else {
s[i--] = s[j];
}
}
return s;
}
1.3.2 面试题16:数值的整数次方
1.3.3 面试题19:正则表达式匹配
1.3.4 面试题20:表示数值的字符串
1.3.5 面试题29:顺时针打印矩阵
1.3.6 面试题44:数字序列中某一位的数字
1.3.7 面试题58:翻转字符串(翻转单词顺序、左旋转字符串)
1.3.8 面试题61:扑克牌的顺子
1.3.9 面试题67:把字符串转换成整数
1.4 String拓展题目
暂时略,看看测试结构,后续补充完全。