题解 | #表示数值的字符串#
表示数值的字符串
http://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8
- 正则表达式解决。
- 注意regex 和 regex_match
- 注意常用的正则的语法。\表示转义,\d这个整数需要转义才可以使用。
- ()用来匹配一块字段,可以后加?号代表该字段可有可无
- []里面的字符有且只能出现一次,可以加*+来控制次数。
- ”“来包含这个串
#include<bits/stdc++.h> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ bool isNumeric(string str) { // write code here if(!str.length()) return false; string s = trim(str);//删除所有空格 if(s.length()==0){//输入的是一个空格 return false; } return regex_match(s, regex("[+-]?(\\d+|\\d+\\.\\d*|\\.\\d+)([eE][+-]?\\d+)?")); } //自定义c++ trim函数 string trim(string str){ auto pos = str.begin();//从头开始找 while(1){ pos = find(pos,str.end(),' '); if(pos==str.end()){ break; } str.erase(pos); } return str; } };
剑指Offer 文章被收录于专栏
剑指offer的解析结合