1 | string replaceSpace(string s){ |
541.反转字符串 II
reverse is 左闭右开 每隔k个就反转
1 | string reverseStr(string s,int k){ |
自己写一个左闭右闭的
1 | void reverse(string& s,int start,int end){ |
1 | class Solution { |
344. 反转字符串
1 | void reverseString(vector<char>& s){ |
18. 四数之和
1 | vector<vector<int>> fourSum(vector<int>& nums,int target){ |
15. 三数之和
1 | vector<vector<int>> threeSum(vector<int>& nums){ |
383. 赎金信
暴力
1 | bool canConstruct(string ransomNote,string magazine){ |
哈希
1 | bool canConstruct(string ransomNote,string magazine){ |
for(int a :nums1)是什么
for(int a :nums1)
是 C++11 中引入的一种新的循环语法,称为范围 for 循环(range-based for loop),用于方便地遍历容器中的元素。
在这个语法中,nums1
是一个容器,a
是一个变量,表示容器中的每个元素。循环语句会依次遍历容器中的每个元素,并将当前元素赋值给变量 a
,然后执行循环体中的语句,直到遍历完所有元素。
以下是一个使用范围 for 循环遍历 vector 容器中的元素的例子:
1 | #include <iostream> |
在这个例子中,我们定义了一个包含整数的 vector
容器 nums
,然后使用范围 for 循环遍历 nums
容器中的每个元素,并将当前元素赋值给 num
变量,然后输出 num
的值。在执行循环语句后,输出结果为:1 2 3 4 5
。
需要注意的是,范围 for 循环可以用于遍历各种类型的容器,包括数组、vector、list、deque、set、map 等容器类型。在实际编程中,我们可以使用范围 for 循环来方便地遍历容器中的元素,以提高代码的可读性和可维护性。
454. 四数相加 II
1 | int fourCount(vector<int>& A,vectot<int>& B,vector<int>& C,vector<int>& D){ |
有关using
有关using
using
是 C++ 中的一个关键字,它有多种用途,主要包括以下几个方面:
别名声明:使用
using
关键字可以给一个类型、变量、函数、模板等起一个别名。例如:1
2using IntVec = std::vector<int>; // using 别名声明
IntVec vec = {1, 2, 3}; // 使用别名 IntVec 来声明 vector<int> 类型的变量上面的代码中,我们使用
using
关键字给std::vector<int>
类型起了一个别名IntVec
,然后使用别名IntVec
来声明一个vector<int>
类型的变量vec
,从而简化了代码。命名空间别名:使用
using namespace
可以给一个命名空间起一个别名。例如:1
namespace my_ns = my_namespace::sub_namespace; // 命名空间别名
上面的代码中,我们使用
using namespace
关键字给my_namespace::sub_namespace
命名空间起了一个别名my_ns
,从而在后续的代码中可以使用my_ns
来代替my_namespace::sub_namespace
。模板别名:使用
using
关键字可以给一个模板类型起一个别名。例如:1
2
3template <typename T>
using MyVec = std::vector<T>; // 模板别名声明
MyVec<int> vec = {1, 2, 3}; // 使用模板别名 MyVec 来声明 vector<int> 类型的变量
上面的代码中,我们使用 using
关键字给 std::vector<T>
类型起了一个模板别名 MyVec<T>
,然后使用模板别名 MyVec<int>
来声明一个 vector<int>
类型的变量 vec
,从而简化了代码。
需要注意的是,using
关键字的使用虽然可以简化代码,但过度使用可能会降低代码的可读性和可维护性。在使用 using
关键字时,应该尽量保持别名的清晰和语义明确,以便于代码的理解和维护。
有关于auto
有关于auto
auto
是 C++11 中引入的关键字,用于让编译器自动推导变量的类型。通过 auto
关键字,我们可以让编译器根据变量的初始值或表达式推导出变量的类型,从而省略变量类型的显式声明。
具体来说,auto
关键字可以用于以下几种情况:
自动推导变量类型:在变量声明时使用
auto
关键字,让编译器自动推导变量的类型。例如:1
2
3
4auto x = 1; // 推导出 x 的类型为 int
auto y = 3.14; // 推导出 y 的类型为 double
auto z = "hello"; // 推导出 z 的类型为 const char*
```函数返回值类型自动推导:在函数定义时使用
auto
关键字,让编译器自动推导函数的返回值类型。例如:1
2
3
4
5auto add(int x, int y) -> int // 推导出函数返回值类型为 int
{
return x + y;
}注意,这种用法需要在函数定义时使用尾置返回类型(trailing return type)语法。
迭代器类型自动推导:在使用迭代器时使用
auto
关键字,让编译器自动推导迭代器的类型。例如:1
2
3
4for (auto it = vec.begin(); it != vec.end(); ++it)
{
// do something with *it
}
在这个例子中,auto
关键字让编译器自动推导出 it
的类型为 std::vector<int>::iterator
。
需要注意的是,虽然 auto
关键字可以让代码更加简洁,但过度使用可能会降低代码的可读性和可维护性。在使用 auto
关键字时,应该尽量保持变量名的清晰和语义明确,以便于代码的理解和维护。
1 | std::vector<int> vec = {1, 2, 3}; |
1 | std::vector<int> vec = {1, 2, 3}; |