LEETCODE:字符串

这篇博客介绍了C++中处理字符串的不同方法,包括判断字符串中字符的唯一性,使用位运算优化算法,以及字符串排序、URL化等操作。还探讨了时间复杂度和空间复杂度的概念。此外,提到了哈希表在检查字符重排问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.判断字符重排

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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值