C++ Leetcode 做题笔记

C++ Leetcode 做题笔记

string

//添加元素

string s;
string s1;
s.push_back('a');
s.append(s1,pos,len);//将s1从pos位置起的len个元素连接到s后
s += s1;//将s1连接到s后

//字符串长度:

int len = s.size();
int len = s.length();

//判断字符串是否为字母+十进制数字

isalnum(s);//返回bool变量

//将字符串string转换大小写

tolower(s)/toupper(s);//小写、大写

字符串比较:
4. 若参与比较的两个串值相同,则函数返回 0;若字符串 S 按字典顺序要先于 S2,则返回负值;反之,则返回正值。

    string A ("aBcdef");
    string B ("AbcdEf");
    string C ("123456");
    string D ("123dfg");
    //下面是各种比较方法
    int s=A.compare(A);//返回0
    int m=A.compare (B); //完整的A和B的比较,返回1
    int n=A.compare(1,5,B,4,2); //"Bcdef"和"AbcdEf"比较,返回-1
    int p=A.compare(1,5,B,4,2); //"Bcdef"和"Ef"比较,返回-1
    int q=C.compare(0,3,D,0,3); //"123"和"123"比较,返回0
string s1("abc");
string s2("abc");
bool f = s1 == s2;

字符串反转:

    string s = "hello";  
    reverse(s.begin(),s.end());  

char

char a;
char s[];
//判断字符是否为字母+十进制数字
isalnum(a);//返回bool变量
//将字符转换大小写
tolower(a)/toupper(a);//小写、大写
//char数组反转
    char s[]="hello";  
    strrev(s);  
    cout<<s<<endl;

vector

  • 删除

//删除指定位置的元素

v.erase(pos);//删除位置pos的元素
v.erase(v.begin()+i);//删除第i个元素 i=0~v.size()-1
v.erase(first, last);//删除[first, last)范围内的元素

//erase-remove方法删除指定值的元素

remove(first,last,value);//删除[first, last)范围内值为value的元素
v.erase(remove(v.begin(),v.end(),num),v.end());//删除[first, last)范围内值为num的元素
  • 查找
    //找到vector中的指定元素
//以vector<int>为例
vector<int>::iterator i;
i = find(v.begin(),v.end(),num);//返回了num所在的地址,若没找到,则i = v.end()

//找到vector中的指定元素的个数

int n = count(v.begin(),v.end(),num);//返回了v中所有num的个数

关于二进制的计算

//计算 x 的二进制表示中 1 的个数
需要注意的是,__builtin_popcount() 是一个编译器内置函数,它只在特定的编译器中有效。在其他编译器中,可能需要使用其他方式实现相同的功能。

int __builtin_popcount(unsigned int x);

哈希函数

  • unordered_map

unordered_map内部实现了一个哈希表 (也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用)。因此,其元素的排列顺序都是无序的。

创建

//需要的头文件
#include<map>
#include<unordered_map>
//构造函数
std::unordered_map<Key, T> myMap; //创建一个空的unordered_map对象,键的类型为Key,值的类型为T。
unordered_map<int, int> myMap;//初始值为0

访问和修改

//访问键321对应的值
myMap[321];
//修改键321对应的值,使之加一
myMap[321]++;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值