1. 判断字符串中字符的唯一性
- string和CString的区别:
CString是MFC或者ATL中的实现。这也就是在MFC、ATL中使用字符串尽量使用CString,它比其它更有优势,方便好用。
string是C++标准库中的实现。最大的优点就是移植性非常好,而且标准库中提供了强大的泛型算法。(不要和<string.h>弄混,<string.h>提供了一些strcat,strcpy等函数;而string是完整的类,头文件是<string>)
- string的使用方法
访问其中的字符:str[[i]
访问字符串长度:str.size()------进行计算时,(int)str.size
字符转数字:int a=str[i]
数字转字符:string str=to_string(5)
- 位运算(判断重复时考虑使用!!!),写代码时一定要注意括号!会影响运算优先级,容易出错
a<<b:a左移b位 a>>b:a右移b位
bool isunique(string str){
int bit=0;
for(int i=0;i<str.size();i++){
if((bit&(1<<(str[i]-'a')))!=0) return false;
else bit=bit|(1<<(str[i]-'a'));
return true;
}
- 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
- 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
2.判断字符重排
- 字符串排序:
sort(str.begin(), str.end());
- 哈希表unordered_map用法:https://blog.youkuaiyun.com/weixin_46820390/article/details/114761369
unordered_map<char,int>map;
for(auto i:s1){
map[i]++;
}
3.URL化
- 判断字符串是否为空 S.empty();
- 字符串的添加 str+="jfondojf";
- 判断两个字符串是否相等 if(strcmp(str.c_str(),str1.c_str())==0) 或者 str1==str
4.一次编辑
- 字符串互换 swap(str1,str2)
- 添加字符 // 在s2对应的位置插入s1[i] s2.insert(s2.begin() + j, s1[i]);
9.字符串轮转
- 字符串连接 string str1=str2+str3;
- 字符串查找,在str1中找str2 str1.find(str2) 查找正确:返回值!=-1