一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1045|回复: 7
收起左侧

[Leetcode] [请教]leetcode的valid number 一题

[复制链接] |试试Instant~ |关注本帖
sqzhang17 发表于 2014-8-12 06:07:32 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
不知道这道题大家都是用什么方法做的~之前的想法是把所有的可能行楼罗列出来~然后写出来一个大的if-else if-else的block~就可以了~这样也能accept~但是有点繁琐~
然后在网上查了查别人的做法~是用正则表达式写的~很简短~只有几行~最主要的一行就是这个:
return s.matches("[-+]?(\\d+\\.?|\\.\\d+)\\d*(e[-+]?\\d+)?");

我想请教一下~这个正则没有 ^ 和 $ 。 那是不是意味着只要这个string但中存在这样的正则表达就行呢?
但是我试了一下~如果输入“a1.1”,返回false~

是不是我的理解有问题? 请教一下大家~

十分感谢~!!!!!
eaglesky1990 发表于 2014-8-13 14:07:33 | 显示全部楼层
很好奇楼主说的用正则表达式的只有几行的程序是什么。不知楼主可否给个链接?

我用的方法是这里的:http://leetcodenotes.wordpress.c ... tcode-valid-number/
感觉这种算法比较好想且不易出错。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| sqzhang17 发表于 2014-8-12 08:11:53 | 显示全部楼层
顶一下吧~别沉啊~希望大家解答啊~
回复 支持 反对

使用道具 举报

DamienPooh 发表于 2014-8-12 08:18:14 | 显示全部楼层
a1.1是不能匹配的,字母里只有字母e才有可能匹配这个表达式。
虽然^$分别代表匹配首末端,但并不是说没有这两个符号就可以匹配任何“包含这样的正则表达”的字符串的。
LZ可以搜一下关于RE的资料,这也有一篇MSDN上的:
http://msdn.microsoft.com/zh-cn/library/28hw3sce(v=vs.80).aspx

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| sqzhang17 发表于 2014-8-12 08:32:53 | 显示全部楼层
DamienPooh 发表于 2014-8-12 08:18
a1.1是不能匹配的,字母里只有字母e才有可能匹配这个表达式。
虽然^$分别代表匹配首末端,但并不是说没有 ...

oo 明白了~
还想请教一个问题~那^$这两个符号一般在什么情况下用呢?

谢谢了`~
回复 支持 反对

使用道具 举报

 楼主| sqzhang17 发表于 2014-8-13 23:58:35 | 显示全部楼层
eaglesky1990 发表于 2014-8-13 14:07
很好奇楼主说的用正则表达式的只有几行的程序是什么。不知楼主可否给个链接?

我用的方法是这里的:htt ...

这是代码~OJ过~AC的~

public static boolean isNumber(String s){
                if(s==null) return false;        // check for null string
               
                s=s.trim();
                if(s.length()==0) return false; // check for empty string
               
                return s.matches("[-+]?(\\d+\\.?|\\.\\d+)\\d*(e[-+]?\\d+)?");
        }
回复 支持 反对

使用道具 举报

eaglesky1990 发表于 2014-8-14 09:41:25 | 显示全部楼层
sqzhang17 发表于 2014-8-13 23:58
这是代码~OJ过~AC的~

public static boolean isNumber(String s){

这样写是不是cheat了。。直接调用java已有的正则表达式api,我觉得面试官won't buy it...而且就效率来讲,肯定复杂度要比最普通的if else要高,从leetcode 的regular expression matching那题就能看出来。
回复 支持 反对

使用道具 举报

 楼主| sqzhang17 发表于 2014-8-14 09:44:10 | 显示全部楼层
eaglesky1990 发表于 2014-8-14 09:41
这样写是不是cheat了。。直接调用java已有的正则表达式api,我觉得面试官won't buy it...而且就效率来讲 ...

哦~是吗?这个我还真的木有想过~可能是吧~但是因为之前不会regex~所以学习了一下~呵呵~本人小白~不要介意。。。。

那等我尝试用if-else写写试试~
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-4 12:21

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表