聊聊跟三哥三姐面试和共事的经历

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 1600|回复: 7
收起左侧

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

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

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

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

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

使用道具 举报

全球28万学生4.7分推荐
 楼主| 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写写试试~
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-22 07:06

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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