leetcode8:字符串转换整数 (atoi)
看到大神,用正则式1行写出,再看看自己的if语句连篇还没做出来,很是受挫。 于是肝了三天,学会了正则表达式。因为不太聪明和要搞清一些细节的东西,才花了那么长时间。 其实入门还是比较容易的。 我的见解: 不去处理字符串前面的空格,直接用正则表达式: ^\s*([+-]?\d+) 其中有以下两点是 初学者 要注意的: 里面的小括号 () 有什么用? () 是捕获组,因为我们实际不需要空格,需要获取剩余的对象。 group(1) 就是我们要的东西,整个正则表达式是 group(0) 。其实我们也 可以不要() ,连带着空格,因为后面的 int() 函数会处理带前后空格的字符串。 + 是元字符,要使用它的字面意思,前面不是要加 \ 转义吗? 大多情况下是要加 \ 的。但在 [] 中,前面是 可以不加 \ 的, 加上去 \ + 当然也没错 。 在 [] 中 要使用字面意思匹配, \ , ] 必须加反斜杠 , - , ^ 分别与用作 区间 (在中间)和 取非 (在前面)功能相冲突时要加反斜杠,其他的时候可以不加,其余字符都可以不加反斜杠。 找到相应的字符串,之后就不必我说了吧。 推荐: 一个学习网址: learn-regex 一个在线练习的网站: regex101 你看花花绿绿的多好看🤣。 测试这道题的,可以用我测试时做的样例: https://regex101.com/r/75rJ8K/6