查看: 3479| 回复: 7
跳转到指定楼层
上一主题 下一主题
收起左侧

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

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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

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

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

十分感谢~!!!!!

上一篇:Clone Graph 问题出错(Output Limit Exceeded)
下一篇:找实习刷Leetcode还是CTCI?
推荐
ilovetennis 2014-8-13 14:07:33 | 只看该作者
全局:
很好奇楼主说的用正则表达式的只有几行的程序是什么。不知楼主可否给个链接?

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

评分

参与人数 1大米 +10 收起 理由
Kimurate + 10 感谢分享!

查看全部评分

回复

使用道具 举报

🔗
 楼主| 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大米 +5 收起 理由
sqzhang17 + 5 回答的很好!

查看全部评分

回复

使用道具 举报

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

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

谢谢了`~
回复

使用道具 举报

🔗
 楼主| sqzhang17 2014-8-13 23:58:35 | 只看该作者
全局:
ilovetennis 发表于 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+)?");
        }
回复

使用道具 举报

🔗
ilovetennis 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 | 只看该作者
全局:
ilovetennis 发表于 2014-8-14 09:41
这样写是不是cheat了。。直接调用java已有的正则表达式api,我觉得面试官won't buy it...而且就效率来讲 ...

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

那等我尝试用if-else写写试试~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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