Leetcode刷题常用函数总结(C++)——随刷题更新中

字符串转整型

stoi:

stoi(s,start,base)//s是要转换的字符串,start是起始位置,base是要转换的整数进制,默认是从0位置开始,转换为10进制
int main() {
	string str = "123";
	int res = stoi(str);
	cout << res << endl;
	system("pause");
	return 0;
}

在这里插入图片描述

数值转字符串

to_string

to_string(val)//val可以是任何数值类型
int main() {
	int num = 123;
	string res = to_string(num);
	cout << res << endl;
	system("pause");
	return 0;
}

Leetcode刷题常用函数总结(C++)——随刷题更新中_第1张图片

分割字符串

分割字符串可以使用getline和istringstream联合实现。

//根据','号分割字符串,getline默认的是按照行读取,但是指定就按照给定的标志分割。
int main() {
	string str = "1,2,3,4,5";
	istringstream s_in(str);
	string c;
	while (getline(s_in, c, ',')) {
		cout << c << endl;
	}
	system("pause");
	return 0;
}

Leetcode刷题常用函数总结(C++)——随刷题更新中_第2张图片
也可以使用双指针实现。

int main() {
	string s = "1,2,3,4,5";
	int len = s.size();
	int start = 0;
	while (start < len) {
		int end = start;
		while (end < len && s[end] != ',')++end;
		string c = s.substr(start, end - start);
		start = end + 1;
		cout << c << endl;
	}
	system("pause");
	return 0;
}

Leetcode刷题常用函数总结(C++)——随刷题更新中_第3张图片

强制类型转换

c++可以使用c的类型转换即 (type-id)expression,同时也有自己的类型转换,在leetcode中常用的是static_cast。

static_cast<new type>(expression)

详细解释

判断字符是否为数字、字母

isalpha(char c)//判断是否为字母
isdigit(char c)//判断是否为数字
isalnum(char c)//判断是否为数字或字母

字母的大小写转换

tolower(char c)//变成小写字母
toupper(char c)//变成大写字母

有序查找

下面两个的都是STL下的

lower_bound()

用于在指定区域内(左闭右开)查找不小于目标值的第一个元素,也就是说最终查找的不一定是和目标值想等的元素,也可能是比目标值大的元素。其底层实现是二分查找。

ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val)
int main() {
	vector<int>nums{ 1,2,3,5,5 };
	auto it1 = lower_bound(nums.begin(), nums.end(), 3);
	cout << *it1<< endl;
	auto it2 = lower_bound(nums.begin(), nums.end(), 4);
	cout << *it2 << endl;
	system("pause");
	return 0;
}

Leetcode刷题常用函数总结(C++)——随刷题更新中_第4张图片

upper_bound()

在指定目标区域中查找大于目标值的第一个元素,返回该元素所在位置的迭代器。

int main() {
	vector<int>nums{ 1,2,3,5,5 };
	auto it1 = upper_bound(nums.begin(), nums.end(), 3);
	cout << it1-nums.begin()<< endl;
	auto it2 = upper_bound(nums.begin(), nums.end(), 4);
	cout << it2-nums.begin() << endl;
	system("pause");
	return 0;
}

Leetcode刷题常用函数总结(C++)——随刷题更新中_第5张图片
对于set和map来说其有属于自己类的lower_bound和upper_bound。

//在两者都能使用时,尽量使用set和map下的,其效率高于STL中的。
set.lower_bound(val)
map.lower_bound(val)

取余操作

这里需要知道对正数和符数取余的结果,取余通常用于是否能够整除某个数。

int main() {
	vector<int>nums{ 1,2,-1,-2,-4,4 };
	for (int n : nums) {
		cout << n % 3 << endl;
	}
	system("pause");
	return 0;
}

Leetcode刷题常用函数总结(C++)——随刷题更新中_第6张图片

你可能感兴趣的:(算法,Leetode刷题系列)