Redian新闻
>
leetcode的Valid Number测试真的变态
avatar
leetcode的Valid Number测试真的变态# JobHunting - 待字闺中
w*s
1
Input: "46.e3"
Output: false
Expected: true
Input: "e9"
Output: true
Expected: false
怎么回事?
avatar
z*e
2
这种实现题不知道有什么难的
老外书写.只要前后一个有数字,都算对
46.和.46都是正确的写法
e则要求前后都需要有数字,如果我记得没错
e后面还有一个额外要求就是整数
无非一些逻辑规则而已
avatar
z*e
3
第一步写出validInteger,规则就是都是数字
第二步写出validDecimal,规则就是只能有一个小数点在里面,小数点前或者后必需出
现数字,利用上validInteger
第三步根据e前后做substring,前面必需是validDecimal,后面必需是validInteger
搞定
avatar
z*e
4
不过我记得我当时切割了五步
应该是考虑了正负号情况
那就是分成
validUnsignedInteger
validInteger
然后是validDecimal,小数点前必需是validInteger,小数点后必需是
validUnsignedInteger
然后再考虑e的情况,e看看leetcode同意不同意用负数的科学计数法
面试时候直接问考官,五个分解方法差不多可以解决
avatar
w*s
5
我用状态机,搞了大概10个状态,100多行代码。。。

【在 z****e 的大作中提到】
: 不过我记得我当时切割了五步
: 应该是考虑了正负号情况
: 那就是分成
: validUnsignedInteger
: validInteger
: 然后是validDecimal,小数点前必需是validInteger,小数点后必需是
: validUnsignedInteger
: 然后再考虑e的情况,e看看leetcode同意不同意用负数的科学计数法
: 面试时候直接问考官,五个分解方法差不多可以解决

avatar
p*2
6
面试不是考试

【在 w********s 的大作中提到】
: Input: "46.e3"
: Output: false
: Expected: true
: Input: "e9"
: Output: true
: Expected: false
: 怎么回事?

avatar
t*h
7
还有问怎么convert这实数的

【在 w********s 的大作中提到】
: Input: "46.e3"
: Output: false
: Expected: true
: Input: "e9"
: Output: true
: Expected: false
: 怎么回事?

avatar
a*0
8
这个题目难度很小 正则表达式
String regex = "[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?";
avatar
a*0
9
状态机是好记 好实现的方法 虽然代码显得多 但是思路straight forward

【在 w********s 的大作中提到】
: 我用状态机,搞了大概10个状态,100多行代码。。。
avatar
a*0
10
我发现一个问题 我的 double escape 都变成 single escape了
mitbbs的编辑器有问题啊 如果要用java做 就要用double escape

【在 a**********0 的大作中提到】
: 这个题目难度很小 正则表达式
: String regex = "[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?";

avatar
s*a
11
不用考虑0x35a这种情况??

【在 w********s 的大作中提到】
: Input: "46.e3"
: Output: false
: Expected: true
: Input: "e9"
: Output: true
: Expected: false
: 怎么回事?

avatar
t*e
12
我也用regex解的,不费脑子。硬搞也学不到什么东西。
avatar
s*x
13
state machine, 代码效率最高, 大约 10 行 左右, 难度在于给出正确的状态转换图,
网上见到过的别的算法都是一堆变量, 查来查去, 面试时肯定汗如雨下, bug 漫天
飞, 根本不可行。
赵策大牛的思路是正确的, 简单易懂, 俺以前给出一个 code, 具体思路也是这个,
懒得去找了。
答题思路:
if +/- skip;
skip digits;
skip .
skip digits;
the sum of the numbers of digits above must > 0
if there is E/e {
skip +/-
skip digits;
}
return empty string or not.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。