剑指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) 相当于维护一个最大队列(队头元素最大,向队尾非严格递减) 在未形成窗口前,先构 ...
随机推荐
- linux.打包与压缩
//打包tar -zcvf etc.tar.gz /etc//解包tar -zxvf hdmzy.tar.gz
- textarea元素在加上runat="server"后运行报错解决
当出现这个报错的时候,在后台引用相应的命名空间,为 using System.Web.UI; using System.Web.UI.HtmlControls;using System.Web.UI. ...
- 完全搞懂傅里叶变换和小波(2)——三个中值定理<转载>
书接上文,本文章是该系列的第二篇,按照总纲中给出的框架,本节介绍三个中值定理,包括它们的证明及几何意义.这三个中值定理是高等数学中非常基础的部分,如果读者对于高数的内容已经非常了解,大可跳过此部分.当 ...
- ZOJ 1007 Numerical Summation of a Series
原题链接 题目大意:x的取值从0.000到2.000,输出每个x对应的y(x)的值 解法:参考了这篇日志http://www.cnblogs.com/godhand/archive/2010/04/2 ...
- 发布常见问题(C#)
1.Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误.服务器返回的状态码为: 500 可能的原因: asp.n ...
- JavaWeb学习记录(十二)——商城购物之数据库操作的接口定义
一.基本接口,该项目中所有接口都继承它 package blank.dao; import java.util.List; public interface BaseDao<T,PK> { ...
- Codeforces Round #125 (Div. 2)
A. Hexadecimal's theorem 三个数没有限制,直接输出\(0\ 0\ n\). B. Special Olympics 分包含和外离情况,包含分2种情况. C. About Bac ...
- Ci分开配置网站前台后台的方法
CodeIgniter 是一个简单快速的PHP MVC框架.EllisLab 的工作人员发布了 CodeIgniter.许多企业尝试体验过所有 PHP MVC 框架之后,CodeIgniter 都成为 ...
- android中常见对话框之一AlertDialog
在Android应用中,有多种对话框:Dialog.AlertDialog.ProgressDialog.时间.日期等对话框. (1)Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽 ...
- 什么是域名?什么网站名?什么是URL?
域名,相信大家都不默认,也使用过无数次!比如: google.com.baidu.com.163.com等. 这时候,你可能要奇怪了,为什么小编没有在前面加上www? 因为正常情况下,不应该是www. ...