题解 | 表示数值的字符串

表示数值的字符串

https://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @return bool布尔型
     */

    bool readUnsignedInt(string& str, int& index, int& n){
        bool ans = false;
        if(index<=n&&str[index]<='9'&&str[index]>='0') ans = true;
        while(index<=n&&str[index]<='9'&&str[index]>='0') ++index;
        return ans;
    }
    bool readInt(string& str, int& index, int& n){
        while(index<=n&&str[index]==' ') ++index;
        if(index<=n&&(str[index]=='+'||str[index]=='-')) ++index;
        return readUnsignedInt(str, index, n);
    }
    bool isNumeric(string str) {
        // write code here
        if(str.empty()) return false;
        int index = 0, n = str.length()-1;
        while(index<=n&&str[index]==' ') ++index;
        while(n>=0&&str[n]==' ') --n;
        bool flag1 = false, flag2 = false, flag3 = true;
        flag1 = readInt(str, index, n);
        if(str[index]=='.'){ ++index;
        flag2 = readInt(str, index, n);}
        if(str[index]=='e'||str[index]=='E') {++index;
        flag3 = false;
        flag3 = readInt(str, index, n);}
        if((index==n+1)&&(flag1||flag2)&&flag3)
            return true;
        return false;
    }
};

不要把太多中间情况带到小函数里,要尽量保持一个函数的功能清楚简单。

比如如果有指数部分,那么你只能检查是否为整数。如果你的小函数返回的是“是否为整数或者小数”,那你就有大麻烦了。

时间复杂度是O(n),这个字符串的长度;空间复杂度是O(1)。

全部评论

相关推荐

点赞 评论 收藏
分享
头像
10-27 15:50
门头沟学院 Java
想进开水团喝开水:有一种店 只能外卖 不能堂食 你猜为什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务