LeetCode065 Valid Number
来源:互联网 发布:梦幻古龙服务端源码 编辑:程序博客网 时间:2024/06/07 19:02
详细见:leetcode.com/problems/valid-number
Java Solution: github
package leetcode;public class P065_ValidNumber {public static void main(String[] args) {System.out.println(new Solution().isNumber(" 4e+ "));}/* * 艰难的试错AC * 4 ms * 61.35% */static class Solution { public boolean isNumber(String s) { char[] cs = s.toCharArray(); int sti = 0, eni = cs.length - 1; while (sti <= eni && cs[sti] == ' ')sti ++; while (eni >= sti && cs[eni] == ' ')eni --; if (sti > eni) return false; if (sti <= eni && (cs[sti] == '-' || cs[sti] == '+')) sti ++; boolean isHasE = false, isHasDot = false, isHasNum = false; int indexOfE = -1; for (int i = sti; i <= eni; i ++) { if (cs[i] == ' ') return false; if (cs[i] == 'e' || cs[i] == 'E') { if (!isHasNum || isHasE || i == sti || i == eni) return false; isHasE = true; indexOfE = i; if (cs[i + 1] == '-' || cs[i + 1] == '+') { if (i + 1 == sti) return false; i ++; } isHasNum = false; continue; } if (cs[i] == '.') { if (isHasDot) return false; isHasDot = true; if (indexOfE != -1 && indexOfE < i) return false; continue; } if (! (cs[i] >= '0' && cs[i] <= '9')) return false; isHasNum = true; } return isHasNum; }}}
C Solution: github
/* url: leetcode.com/problems/valid-number AC 6ms 11.86%*/typedef int bool;/* sign: still sign means still true 1: num 2: e 3: dot*/bool isNumber(char* s) { char c = '\0'; int sign = 0; int dot_cnt = 0; int e_cnt = 0; int has_val = 0; int si = 0, ei = -1, i = 0; while (s[ei+1] != '\0') ei ++; while (s[ei] == ' ') ei --; while (s[si] == ' ') si ++; for (i = si; i <= ei ; i++) { c = s[i]; if (c == '\0') break; if (c == '-' || c == '+') { if (i != si && sign != 2) return 0; continue; } if (c == ' ') { return 0; } //check .(dot) if (c == '.') { //has .(dot) if (dot_cnt != 0) return 0; if (sign == 2) return 0; if (e_cnt > 0) return 0; dot_cnt = 1; sign = 3; continue; } //check e if (c == 'e' || c == 'E') { //has e if (e_cnt != 0) return 0; if (has_val == 0) return 0; e_cnt = 1; sign = 2; continue; } if (c >= '0' && c <= '9') { has_val = 1; sign = 1; continue; } return 0; } return sign == 2 ? 0 : has_val;}int main() { char* s = "-13. "; printf("answer is %d\r\n", isNumber(s)); return 0;}
Python Solution: github
#coding=utf-8''' url: leetcode.com/problems/valid-number @author: zxwtry @email: zxwtry@qq.com @date: 2017年4月14日 @details: Solution: 56ms 86.13%'''class Solution(object): def isNumber(self, s): """ :type s: str :rtype: bool """ try: float(s) return True except: return False
0 0
- LeetCode065 Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- Valid number
- Valid Number
- Valid Number
- Valid Number
- Valid Number
- 线程同步工具之CountDownLatch
- 登山
- 2017/4/15 Twosat介绍
- github上传本地代码失败
- java中泛型有什么用,举例说明?
- LeetCode065 Valid Number
- 字符串或数组全排列的三种方法
- 二分查找的递归实现
- 求1/2
- LeetCode066 Plus One
- Android 各部布局
- 【HTML5学习笔记】1:工具的使用和基本格式
- Fragment中调用getActivity为null的问题
- Android中drawableStart和drawableLeft的区别