w********s 发帖数: 1570 | 1 Input: "46.e3"
Output: false
Expected: true
Input: "e9"
Output: true
Expected: false
怎么回事? |
z****e 发帖数: 54598 | 2 这种实现题不知道有什么难的
老外书写.只要前后一个有数字,都算对
46.和.46都是正确的写法
e则要求前后都需要有数字,如果我记得没错
e后面还有一个额外要求就是整数
无非一些逻辑规则而已 |
z****e 发帖数: 54598 | 3 第一步写出validInteger,规则就是都是数字
第二步写出validDecimal,规则就是只能有一个小数点在里面,小数点前或者后必需出
现数字,利用上validInteger
第三步根据e前后做substring,前面必需是validDecimal,后面必需是validInteger
搞定 |
z****e 发帖数: 54598 | 4 不过我记得我当时切割了五步
应该是考虑了正负号情况
那就是分成
validUnsignedInteger
validInteger
然后是validDecimal,小数点前必需是validInteger,小数点后必需是
validUnsignedInteger
然后再考虑e的情况,e看看leetcode同意不同意用负数的科学计数法
面试时候直接问考官,五个分解方法差不多可以解决 |
w********s 发帖数: 1570 | 5 我用状态机,搞了大概10个状态,100多行代码。。。
【在 z****e 的大作中提到】 : 不过我记得我当时切割了五步 : 应该是考虑了正负号情况 : 那就是分成 : validUnsignedInteger : validInteger : 然后是validDecimal,小数点前必需是validInteger,小数点后必需是 : validUnsignedInteger : 然后再考虑e的情况,e看看leetcode同意不同意用负数的科学计数法 : 面试时候直接问考官,五个分解方法差不多可以解决
|
p*****2 发帖数: 21240 | 6 面试不是考试
【在 w********s 的大作中提到】 : Input: "46.e3" : Output: false : Expected: true : Input: "e9" : Output: true : Expected: false : 怎么回事?
|
t**********h 发帖数: 2273 | 7 还有问怎么convert这实数的
【在 w********s 的大作中提到】 : Input: "46.e3" : Output: false : Expected: true : Input: "e9" : Output: true : Expected: false : 怎么回事?
|
a**********0 发帖数: 422 | 8 这个题目难度很小 正则表达式
String regex = "[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?"; |
a**********0 发帖数: 422 | 9 状态机是好记 好实现的方法 虽然代码显得多 但是思路straight forward
【在 w********s 的大作中提到】 : 我用状态机,搞了大概10个状态,100多行代码。。。
|
a**********0 发帖数: 422 | 10 我发现一个问题 我的 double escape 都变成 single escape了
mitbbs的编辑器有问题啊 如果要用java做 就要用double escape
【在 a**********0 的大作中提到】 : 这个题目难度很小 正则表达式 : String regex = "[-+]?(\d+\.?\d*|\.\d+)(e[-+]?\d+)?";
|
s********a 发帖数: 2796 | 11 不用考虑0x35a这种情况??
【在 w********s 的大作中提到】 : Input: "46.e3" : Output: false : Expected: true : Input: "e9" : Output: true : Expected: false : 怎么回事?
|
t*******e 发帖数: 684 | 12 我也用regex解的,不费脑子。硬搞也学不到什么东西。 |
s**x 发帖数: 7506 | 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. |