LintCode刷题:有效数字

       今天第一次是跟随一个博主学习足迹知道有LintCode 和LeetCode这两个刷题网址,专为学编程的同志练手,我希望我可以每天坚持刷一题!!!!

       第一次不知道直接点“帮我挑一题”,给了我《有效数字》这道题。一看到这道题感觉还蛮简单的,可写才知道自己的基础 是多么的薄弱,内心那个崩溃啊!而且不知道为什么我在线写的Java程序总是有错的,但是我复制到我eclipse中运行时对的,最后无奈找了这道题的c++版的程序。

题目:有效数字

要求:http://www.cnblogs.com/peijie-tech/p/3540170.html。希望可以得到如下效果:

"0" => true

" 0.1 " => true

"abc" => false

"1 a" => false

"2e10" => true

程序 :

public class isNumber {

	public static void main(String[] args) {
	        String str="123456";
	        isNumber a=new isNumber();
	        boolean result=a.effNumber(str);
	        System.out.print(str+'是'+result);

	}
	public boolean effNumber(String str){
        return str.matches("[0-9]+");
    }

}

c++程序:

class Solution {
public:
    /**
     * @param s the string that represents a number
     * @return whether the string is a valid number
     */
    bool isNumber(string& s) {
        // Write your code here
        int start = 0;
        int end = s.length() - 1;
        // trim leading spaces
        while (start <= end && s[start] == ' ')
            start++;
 
        if(start > end) //empty
            return false;
 
        //trim trailing spaces
        while(s[end] == ' ')
            end--;
 
        // skip leading +/-
        if (s[start]== '+' || s[start] == '-')
            start++;
 
        bool num = false; // is a digit
        bool dot = false; // is a '.'
        bool exp = false; // is a 'e'
        while(start <= end) {
            if (s[start] >= '0' && s[start] <= '9') {
                num = true;
            } else if (s[start] == '.') {
                if (exp || dot)
                    return false;
                dot = true;
            } else if (s[start] == 'e') {
                if(exp || num == false)
                    return false;
                exp = true; 
                num = false;
            } else if (s[start] == '+' || s[start] == '-') {
                if (s[start - 1] != 'e')
                    return false;
            } else {
                return false;
            }
            start++;
        }
        return num;
    }
};
大家还有什么比较好的方法告诉我一下哈!最好是Java版的,参考博文:http://www.cnblogs.com/peijie-tech/p/3540170.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值