1. 程式人生 > >劍指offer_表示數字的字串

劍指offer_表示數字的字串

/*
請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。
例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 
但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

思路:
正負號只能出現在開頭第一個或者指數第一個即E或者e之後第一個,"+-5" pass
只能由數字或者E或者e組成,"1a3.14" pass
E或者e之後必須跟一個或正或負的整數作為指數 "12e",12e+4.3" pass
小數點只能有一個,"1.2.3"pass
*/

class  IsNumeric
{
	public static boolean isNumeric(char[] str) {
        if (str==null||str.length<=0)
        {
			return false;
        }

		int  decimalPointCount=0;// 小數點個數
		int  decimalPointPosition=0;//小數點位置
		int  ePosition=0;
		for (int i=0; i<str.length; i++)
		{
			//首位出現正負號
			if (i==0&&(str[i]=='+'||str[i]=='-'))
			{
				continue;
			}

			if (str[i]<'0'||str[i]>'9')    //不是數字
			{	
				if (str[i]=='e'||str[i]=='E')  //E或者e出現
				{
					if (i==0||i==str.length-1)    //如果首位出現e?如果末位出現e?
					{
						return false;
					}
					ePosition=i;
					if (str[i+1]=='+'||str[i+1]=='-')    
					{
						i=i+1;
					}
				}else if (str[i]=='.')	//小數點出現
				{
					if (i==0||i==str.length-1||decimalPointCount!=0||(ePosition!=0&&i>ePosition))//小數點在首位、末位,已經有小數點,或者小數點在e之後
					{
						return false;
					}else
						decimalPointCount++;	//第一個小數點

				}else//不是數字,不是E或者e,不是小數點
					return false;
			}
		}
		return true;
    }

	public static void main(String[] args) 
	{
		char[] str={'1','2','e','+','4','.','3'};
		System.out.println(isNumeric(str));
	}
}

相關推薦

offer_表示數字字串

/* 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。 例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14",

offer_第六題_旋轉陣列的最小數字

平臺 牛客網 語言 python2.7.3 作業內容 題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 如陣列 {3,4,5,1,2} 為 {1,2,3,4,5} 的一個旋轉,該陣列的最小

offer____表示數值的字串

請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 class Solution { public:

offer_陣列中只出現一次的數字

題目描述 一個整型數組裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。 # -*- coding:utf-8 -*- class Solution:     # 返回[a,b] 其中ab是出現一次的兩個數字   &n

offer----表示數值的字串

題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示數值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。 //分解

牛客網 offer_程式設計題—— 陣列中重複的數字(C++)

在一個長度為n的數組裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意一個重複的數字。 例如,如果輸入長度為7的陣列{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。 C++ class So

offer 表示數值的字串 python

題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。 樣例 例如,字串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

offer_陣列---旋轉陣列的最小數字

題目描述 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非遞減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0

Offer_53_表示數值的字串

題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。

offer:表示數值的字串

題目描述 請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。 c

offer 38 數字在排序數組中出現的次數

++ exit false ast stk div number size cto 自己的寫法 class Solution { public: int GetNumberOfK(vector<int> data ,int k) { i

Offer_編程題_4

題目 tor 結果 else 編程 sub node UC urn 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,

Offer_編程題_23

== vector true subject 後序 highlight 如果 light des 題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 class Solu

Offer_編程題_25

list tno off cond next ext 輸入 輸出 label 題目描述 輸入一個復雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果為復制後復雜鏈表的head。(註意,輸出結果中請不要返回參數中的節點引

Offer_編程題之重建二叉樹

off bottom 編程題 subject 假設 image inf 重復 題目 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序

offer -- 左旋轉字串

題目描述 組合語言中有一種移位指令叫做迴圈左移(ROL),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於一個給定的字元序列S,請你把其迴圈左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,要求輸出迴圈左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK

offer_第九題_變態跳臺階

平臺 牛客網 語言 python2.7.3 作業內容 題目描述 一隻青蛙一次可以跳上 1 級臺階,也可以跳上 2 級…… 它也可以跳上 n 級。 求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 題目理解 一步:1種跳法 1 二步:2種 11 2

offer_第八題_跳臺階

平臺 牛客網 語言 python2.7.3 作業內容 題目描述 一隻青蛙一次可以跳上 1 級臺階,也可以跳上 2 級。 求該青蛙跳上一個 n 級的臺階總共有多少種跳法(先後次序不同算不同的結果) 題目理解 該題的本質是斐波那契數列 解題思路 一級:1種跳法

offer_第七題_斐波那契數列

平臺 牛客網 語言 python2.7.3 作業內容 題目描述 大家都知道斐波那契數列,現在要求輸入一個整數 n, 請你輸出斐波那契數列的第 n 項(從 0 開始,第 0 項為 0)。 n<=39 題目理解 什麼是斐波那契數列? 斐波那契數列(Fibonac