- 浏览: 277623 次
- 性别:
文章分类
最新评论
LeetCode-Valid Number - 有限状态机
class Solution { public: bool isNumber(const char *s) { enum InputType { INVALID, // 0 SPACE, // 1 SIGN, // 2 DIGIT, // 3 DOT, // 4 EXPONENT, // 5 NUM_INPUTS // 6 }; int transitionTable[state][inputType] = { INVALID,SPACE,SIGN,DIGIT,DOT,EXPONENT -1, 0, 3, 1, 2, -1, // state0 当输入空格时,状态仍为0, 输入为符号时,状态转为3,3的转换和0是一样的,除了不能再接受符号,故在0的状态的基础上,把接受符号置为-1; 当输入为数字时,状态转为1, 状态1的转换在于无法再接受符号,可以接受空格,数字,点,指数;状态1为合法的结束状态; 当输入为点时,状态转为2,状态2必须再接受数字,接受其他均为非法; 当输入为指数时,非法; -1, 8, -1, 1, 4, 5, // state1 接受数字时仍转为状态1, 接受点时,转为状态4,可以接受空格,数字,指数,状态4为合法的结束状态, 接受指数时,转为状态5,可以接受符号,数字,不能再接受点,因为指数必须为整数,而且必须再接受数字; 【合法的结束状态】 -1, -1, -1, 4, -1, -1, // state2 接受数字转为状态4 -1, -1, -1, 1, 2, -1, // state3 和0一样,只是不能接受符号 -1, 8, -1, 4, -1, 5, // state4 接受空格,合法接受; 接受数字,仍为状态4; 接受指数,转为状态5 【合法的结束状态】 -1, -1, 6, 7, -1, -1, // state5 接受符号,转为状态6,状态6和状态5一样,只是不能再接受符号, 接受数字,转为状态7,状态7只能接受空格或数字;状态7为合法的结束状态; -1, -1, -1, 7, -1, -1, // state6 只能接受数字,转为状态7 -1, 8, -1, 7, -1, -1, // state7 接受空格,转为状态8,状态7为【合法的结束状态】 接受数字,仍为状态7; -1, 8, -1, -1, -1, -1, // state8 接受空格,转为状态8,状态8为【合法的结束状态】 }; int state = 0; while (*s != '\0') { InputType inputType = INVALID; if (isspace(*s)) inputType = SPACE; else if (*s == '+' || *s == '-') inputType = SIGN; else if (isdigit(*s)) inputType = DIGIT; else if (*s == '.') inputType = DOT; else if (*s == 'e' || *s == 'E') inputType = EXPONENT; state = transitionTable[state][inputType]; if (state == -1) return false; else ++s; } return state == 1 || state == 4 || state == 7 || state == 8; } };
发表评论
-
Job Sequencing with Deadline
2018-09-18 15:47 708Algorithm: Job-Sequencing-Wit ... -
Strassen’s Matrix Multiplication
2018-09-18 15:45 771Algorithm: Matrix-Multiplicat ... -
Binary Search
2018-09-18 15:43 528Algorithm: Binary-Search(numb ... -
Merge Sort
2018-09-18 14:54 507Algorithm: Merge-Sort (number ... -
Max-Min Problem
2018-09-18 13:00 662Algorithm: Max - Min(x, y) ... -
Shortest Paths
2018-09-17 19:16 610Algorithm: Dijkstra’s-Algorit ... -
Fractional-Knapsack
2018-09-17 18:52 542Algorithm: Greedy-Fractional- ... -
语法描述符号
2018-08-03 11:29 0* 0次或以上 + 1次或以上 ? 0次或1次 {A ... -
语法描述符号
2018-08-03 11:27 26* 0次或以上 + 1次或以上 ? 0次或1次 {A ... -
语法描述符号
2018-08-03 11:26 1* 0次或以上 + 1次或以上 ? 0次或1次 {A ... -
语法描述符号
2018-08-03 11:26 0* 0次或以上 + 1次或以上 ? 0次或1次 {A ... -
语法描述符号
2018-08-03 11:25 0* 0次或以上 + 1次或以上 ? 0次或1次 {A ... -
语法描述符号
2018-08-03 11:25 0* 0次或以上 + 1次或以上 ? 0次或1次 {A ... -
5分钟后取消订单
2018-06-01 16:44 465分钟后取消订单功能设计。 项目提到,但暂时还没做。 这里我想 ... -
N进制与10进制相互转换
2018-05-23 14:47 35public class ShareCodeUtil { ... -
RC4实现收集二例(Complete)
2018-05-22 03:51 36import java.io.UnsupportedEnc ... -
RC4实现收集二例(Simple)
2018-05-22 03:49 26public class RC4 { pub ...
相关推荐
### DNS服务器基本配置知识点 #### 一、DNS服务器概述 DNS(Domain Name System,域名系统)是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。...
leetcode最难LeetCode_ValidNumber 因为我疯了,所以我去了 LeetCode,并按 Hardest:LeastSolved 排序。 没有汗! 语言:C# 我学到的是 这个很疯狂,因为它在定义实际可以算作数字方面确实做得很差。 如果这是面对面...
throw new Error('Input must be a valid number.'); } return num.toString(2); } console.log(numToBin(10)); // 输出 "1010" ``` 这个`numToBin`函数首先检查输入是否为有效数字,然后调用`toString(2)`进行...
from phonenumbers import parse, format_number, is_valid_number # 解析电话号码 number = parse("+16502530000", "US") # 验证电话号码 if is_valid_number(number): print("Valid number!") else: print(...
ISVALID NUMBER(1), SYSTEMNAME VARCHAR2(50) ); -- Create/Recreate primary, unique and foreign key constraints alter table APPMENU add constraint PK_APPMENU primary key (APPMENUID);
7. `number`: "Please enter a valid number." 8. `digits`: "Please enter only digits" 9. `creditcard`: "Please enter a valid credit card number." 10. `equalTo`: "Please enter the same value again." 11. ...
System.out.println("Valid Number: " + isValidPhoneNumber(validNumber)); // 应该返回true System.out.println("Invalid Number: " + isValidPhoneNumber(invalidNumber)); // 应该返回false } } ``` 通过...
javascript js_leetcode题解之65-valid-number.js
println "Please enter a valid number." } ``` 此外,Groovy还提供了许多库,如GPars(Groovy Parallel Systems),用于并发和多线程编程,这在处理复杂的文本界面程序时可能会派上用场。 在"完成文本界面的程序...
- `number: "Please enter a valid number."` —— 数字格式错误提示。 - `digits: "Please enter only digits"` —— 只能输入数字提示。 - `creditcard: "Please enter a valid credit card number."` —— 信用卡...
//throw new ArgumentException("hex is not a valid number!", "hex"); } byte[] bytes = new byte[hex.Length / 2]; for (int i = 0; i ; i++) { try { bytes[i] = byte.Parse(hex.Substring(i * 2, 2),...
The number of questions is increasing recently. Here is the classification of all `468` questions. For more questions and solutions, you can see my [LintCode](https://github.com/kamyu104/LintCode) ...
9. Valid Number:判断一个字符串是否可以表示为有效数字,涉及到数字表示和边界条件的处理。 10. Longest Substring Without Repeating Characters:找出不含重复字符的最长子串,通常使用滑动窗口技术。 11. ...
Please enter a valid number.\n"); } else return num; } } ``` - **知识点:** - 使用`switch`语句根据不同的输入值执行相应的操作。 - 处理用户输入错误的情况,例如非数字输入。 - 计算工资时利用...
9. Valid Number:判断一个字符串是否是有效的数字表示。 10. Longest Substring Without Repeating Characters:找出不含有重复字符的最长子串的长度。 11. Longest Substring with At Most Two Distinct ...
else: print "Please enter a valid number for dateOfWeek."` 循环控制 for 和 while 循环控制用于让电脑循环计算,直到完成某个条件。Python 主要有两种循环控制方法:for 和 while。 for 循环主要用于遍历一...
* @throws IllegalArgumentException If either num1 or num2 is not a valid number. */ public int addNumbers(int num1, int num2) throws IllegalArgumentException { // implementation } ``` 2. **生成...
number: "Please enter a valid number." } }); ``` ##### 8. 整数验证:`digits` 确保输入的值仅包含数字。 ```javascript $("#form").validate({ rules: { digits: { digits: true } }, messages: { ...