LeetCode 38. Count and Say
1 | class Solution { //一个模拟问题 |
to_string :
1 | string to_string (int val); |
49. Group Anagrams
1 | class Solution { |
151. Reverse Words in a String
1 | class Solution { |
erase()
basic_string & erase(size_type pos=0, size_type n=npos);
从给定起始位置pos处开始删除,要删除的字符长度为 n, 返回值为修改后的string对象的引用。iterator erase(const_iterator position)
删除迭代器位置处的单个字符,并返回下个元素的迭代器。iterator erase(const_iterator first, const_iterator last)
删除迭代器[first, last)区间的所有字符,返回一个指向被删除的最后一个元素的下一个字符的迭代器。除了erase方法用于删除string中的元素,
void pop_back();方法也可以用来删除元素, 但是只能删除string的最后一个元素
1 |
|
输出分别为
1.Hay Potter
2.HarryPotter
3.Harry
string::find()
int vis = a.find(b) 从string a 开头开始查找第一个遇到的string b, 返回string a中所匹配字符串的第一个字符的下标位置,找不到则返回-1.
每个单词之间可能不止有一个空格
reverse(s.beign(), s.end())
关于 reverse(s.beign(), s.end()); 这里特别注意 reverse()的两个迭代器参数 是 前闭后开的。
程序中使用的reverse(s.begin() + i, s.end() + j) 也是如此。
如图, reverse(s.begin() + i, s.end() + j) 实际的反转范围是红圈内的部分。
下面这个套路很常用
1 | int j = i; |
165. Compare Version Numbers
1 | class Solution { |
比较版本号。
c_str() 返回字符串所在字符数组的起始地址
atoi() 的参数必须是字符数组的指针
stoi() 参数是 const string*
会做范围检查, 默认范围是在int的范围内的, 如果越界就会 runtime error
atoi() 参数是 const char, 因此要调用 c_str() 把string转换成 const char
aoti()不会做范围检查,如果超出上界,则输出上界; 超出下界, 则输出下界。
substr()
1 |
|
上述程序输出为: 12345
s.substr(pos, n)返回一个string, 包含s中从pos开始的n个字符的拷贝(pos默认值是0, n默认值是s.size() - pos, 即无参数会默认拷贝整个s)- 若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾
929. Unique Email Addresses
STL C++11 还有很多要总结的
1 | class Solution { |
5. Longest Palindromic Substring
1 | class Solution { |
双指针 暴力枚举
3. Longest Substring Without Repeating Characters
1 | class Solution { |
双指针 暴力枚举