剑指offer系列27--表示数值的字符串
【题目】请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
package com.exe6.offer;
/**【题目】
* 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
* 例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。
* 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
* @author WGS
*
*/
public class IsString {
int index=0;
public boolean isString(char[] str){
if(str==null || str.length<=0) return false; int len=str.length; //0 去除首尾空格
while(str[index]==' ')
index++;
if(index>=len) return false;
while(str[len-1]==' ')
len--;
if(len<=0) return false; //1 判断是否正负号
if(str[index]=='+' || str[index]=='-')
index++;
if(index>=len) return false;
//2 判断正负号后的整数 是整数就直接跳过,不是在整数则跳到下一步;
scanDigits(str,index);
if(index==len) return true;
int index2=0; //3 判断小数点后是否满足
if(str[index]=='.'){
index++;
if(index==len) return true;
index2 = index;
scanDigits(str,index); if(index==index2) return false;//说明index没变,.后数不满足整数条件
if(index==len) return true;
}
//4 判断科学计数法
if(str[index]=='e'||str[index]=='E'){
index++;
if(index==len)
return false;
if(str[index]=='+' || str[index]=='-')
index++;
index2=index;
scanDigits(str,index);
if(index==index2) return false;//说明index没变,.后数不满足整数条件
if(index==len) return true;
} return false; }
private void scanDigits(char[] str, int i) {
while(i<str.length &&str[i]<='9' && str[i]>='0'){
i++;
index++;
}
} public static void main(String[] args) {
String s = "24.44";
boolean b = new IsString().isString(s.toCharArray());
System.out.println(b);
} }
剑指offer系列27--表示数值的字符串的更多相关文章
- 干货 | 剑指offer系列文章汇总
下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现 剑指offer系列 始 剑指offer—灯管问题(1) 剑指offer—10人电梯(2) ...
- 剑指Offer - 九度1514 - 数值的整数次方
剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponen ...
- 剑指Offer(二十七):字符串的排列
剑指Offer(二十七):字符串的排列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baid ...
- 剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)
剑指Offer - 九度1362 - 左旋转字符串(Move!Move!!Move!!!)2013-11-23 03:05 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任 ...
- 剑指 Offer 46. 把数字翻译成字符串 + 动态规划
剑指 Offer 46. 把数字翻译成字符串 Offer_46 题目描述 题解分析 本题的解题思路是使用动态规划,首先得出递推公式如下 dp[i] = dp[i-1]+dp[i-2](如果s[i-1] ...
- 力扣 - 剑指 Offer 46. 把数字翻译成字符串
题目 剑指 Offer 46. 把数字翻译成字符串 思路1(递归,自顶向下) 这题和青蛙跳台阶很类似,青蛙跳台阶说的是青蛙每次可以跳一层或者两层,跳到第 n 层有多少种解法,而这题说的是讲数字翻译成字 ...
- 【Java】 剑指offer(53-3) 数组中数值和下标相等的元素
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 假设一个单调递增的数组里的每个元素都是整数并且是唯一的.请编程 ...
- 【剑指offer】27. 二叉树的镜像
剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...
- 剑指offer计划27(栈与队列困难)---java
1.1.题目1 剑指 Offer 59 - I. 滑动窗口的最大值 1.2.解法 解题思路:(来自作者bigbeats) 相当于维护一个最大队列(队头元素最大,向队尾非严格递减) 在未形成窗口前,先构 ...
随机推荐
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...
- android的style控制Theme
value-v14就是在API14(4.0)的手机上所使用的Theme(其他版本以此类推) theme的名字叫做AppTheme,后面写有继承自哪个Theme,如下所示 <style name= ...
- 解决MySQL中【Cannot load from mysql.proc. The table is probably corrupted
[错误过程]:MySQL从5.1升级至5.5后在调用存储过程时报出“Cannot load from mysql.proc. The table is probably corrupted.” [造成 ...
- c#实现数据的左补右补功能
/// <summary> /// 左補右補功能 /// </summary> /// <param name="st ...
- Codeforces Round #277 (Div. 2) A B C 水 模拟 贪心
A. Calculating Function time limit per test 1 second memory limit per test 256 megabytes input stand ...
- AspxGridView
转:出处 http://i.cnblogs.com/EditPosts.aspx?opt=1 AspxGridView点滴 1:页码设置 <SettingsPager> & ...
- Spring的声明试事务
1 在配置文件中加入: <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.spring ...
- TFTP网络协议分析---15
TFTP网络协议分析 周学伟 文档说明:所有函数都依托与两个出口,发送和接收. 1:作为发送时,要完成基于TFTP协议下的文件传输,但前提是知道木的PC机的MAC地址,因为当发送TFTP请求包时必须提 ...
- Kernel panic - not syncing: Attempted to kill init
解决方法:系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/log ...
- Java中相等测试
一:equals与==的区别 (1)基本数据类型 byte,short,char,int,long,float,double,boolean 此类数据类型的比较需要使用==,此时比较的是他们的值,若相 ...