面试题54:表示数值的字符串
来源:互联网 发布:淘宝客服售前售后技巧 编辑:程序博客网 时间:2024/05/18 02:11
/* * Question Description: * (Question 12 in <Coding Intervies>) How do you check whether a string stands for a number or not? * Numbers include positive and negative integers and floats. For example, strings “+100.”, “5e2”, “-.123”, “3.1416”, and “-1E-16” * stand for numbers, but “12e”, “1a3.14”, “1.2.3”, “+-5”, and “12e+5.4” do not. */#include <stdio.h>void scanDigits(char** string);bool isExponential(char** string);bool isNumeric(char* string){ if(string == NULL) return false; if(*string == '+' || *string == '-') ++string; if(*string == '\0') return false; bool numeric = true; scanDigits(&string); if(*string != '\0') { // for floats if(*string == '.') { ++string; scanDigits(&string); if(*string == 'e' || *string == 'E') numeric = isExponential(&string); } // for integers else if(*string == 'e' || *string == 'E') numeric = isExponential(&string); else numeric = false; } return numeric && *string == '\0';}void scanDigits(char** string){ while(**string != '\0' && **string >= '0' && **string <= '9') ++(*string);}bool isExponential(char** string){ if(**string != 'e' && **string != 'E') return false; ++(*string); if(**string == '+' || **string == '-') ++(*string); if(**string == '\0') return false; scanDigits(string); return (**string == '\0') ? true : false;}// ==================== Test Code ====================void Test(char* testName, char* string, bool expected){ if(testName != NULL) printf("%s begins: ", testName); if(isNumeric(string) == expected) printf("Passed.\n"); else printf("FAILED.\n");}int main(int argc, char* argv[]){ Test("Test1", "100", true); Test("Test2", "123.45e+6", true); Test("Test3", "+500", true); Test("Test4", "5e2", true); Test("Test5", "3.1416", true); Test("Test6", "600.", true); Test("Test7", "-.123", true); Test("Test8", "-1E-16", true); Test("Test9", "1.79769313486232E+308", true); printf("\n\n"); Test("Test10", "12e", false); Test("Test11", "1a3.14", false); Test("Test12", "1+23", false); Test("Test13", "1.2.3", false); Test("Test14", "+-5", false); Test("Test15", "12e+5.4", false);return 0;}
https://github.com/zhedahht/ChineseCodingInterviewAppendix/blob/master/NumericStrings/NumericString.cpp
0 0
- 面试题54:表示数值的字符串
- 面试题54:表示数值的字符串
- 面试题54:表示数值的字符串
- 面试题62:表示数值的字符串
- 面试题55. 表示数值的字符串
- 面试题54. 表示数值的字符串
- 【剑指Offer学习】【面试题54:表示数值的字符串】
- 面试题54——表示数值的字符串
- 剑指offer-面试题54:表示数值的字符串
- 剑指offer--面试题54:表示数值的字符串
- 剑指Offer面试题54:表示数值的字符串
- 剑指offer-面试题54-表示数值的字符串
- 【剑指Offer】面试题54:表示数值的字符串
- 剑指offer面试题[54]-表示数值的字符串
- 剑指offer--面试题20:表示数值的字符串
- 【剑指offer】面试题20:表示数值的字符串
- 《剑指Offer》学习笔记--面试题54:表示数值的字符串
- 剑指offer——面试题54:表示数值的字符串
- 春里梧桐听雨
- 产品
- 一切重新开始
- Ruby笔记–正则表达式
- flexbox 弹性盒布局和布局原理
- 面试题54:表示数值的字符串
- 学习iOS开发随笔(一)
- IllegalArgumentException:Service Intent must be explicit
- 抽样方法
- 数据库第五章习题
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 20150503 N1
- 字符串的排列
- p123 第三章 第30题 潘璠