一、Leetcode 20. 有效的括号
有的同学经常会想学的这些数据结构有什么用,也开发不了什么软件,大多数同学说的软件应该都是可视化的软件例如APP、网站之类的,那都是非常上层的应用了,底层很多功能的实现都是基础的数据结构和算法。所以数据结构与算法的应用往往隐藏在我们看不到的地方!
很经典的题目,我五年前就学过。只不过当时是c现在是c++的stack。如果当时,我留级转了计算机,现在就不用刷题了。当然也不会保研因为卷不过他们。也就是说,学海无涯,学习是一件耗青春的事,因此要学就学好基本功,比如数学,英语,coding,计算机,到了岗位上再拓展。机器人尤其是这样,它是一个综合学科,一个本科生是学不全机器人的。那就应该从基本功练起。
二、Leetcode 1047. 删除字符串中的所有相邻重复项
好吧,整理一下string容器的用法。原文链接
成员函数如下:
size()//获取字符串长度
insert()//插入字符串
append()//插入字符串
erase()//删除任意字符,时间复杂度O(n),n为字符串长度
substr()//截取字符字串
back()//获取最后一个字符
pop_back()//删除最后一个字符,时间复杂度O(1)
empty()//判断是否为空
clear()//清空字符串
string常用的三种插入方法:
1、+号
s+="b"后:s=ab
2、insert()
s.insert(2,"c")后:s=abc
3、append
s.append("d")后:s=abcd
查看字符串大小
s.size()=4
截取字符串
s.substr(1,2)=bc
删除特定字符
s.erase(0,2)后: s=cd
删除最后一个字符
s.pop_back()后:s=c
两种判断字符串是否为空的方法
1、s.empty()等于1时即为空,等于0时非空
2、用s==判断,等于1时即为空,等于0时非空
s.empty() = 0
(s=="") = 0
两种清空字符串方法
1、s.clear()
2、s=""
清空后
s.empty() = 1
(s=="") = 1
string 的比较是以逐个字母的ascii码进行比较的。但是要注意单引号和双引号的区别。
"a"和’a’的区别,前者是字符串,后者是字符。
实际上,"a"在内存中一般占2个字节(不是说字符串长度,是占用内存。注意说是一般占2字节,有特殊情况),“a\0”,以’\0’结尾。
而’a’是一个单字符。
字符串转换
stoi(),将字符串转换为整型
stof(),将字符串转换为float型
stoll(),把字符串转换为long long int
stod(),将字符串转换为double型
string 遍历方法:
- 下标遍历:通过下标随机访问逐个遍历。
for(int i=0;i<s.size();i++)
- foreach遍历,
for(char c:s)
三、Leetcode 150. 逆波兰表达式求值
注意用到栈,就要注意FIFO还是LIFO,运算顺序。