正则判断是否为0-9整数_[剑指offer]33字符串转整数

今天开始讲和大家坚持打卡面试非常重要算法练习---剑指offer,希望我们能一起肝。

1 题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0

2 思路----c++

判断非法字符。每个字符按照公式转换number*10+str[i]-'0';

3 代码实现

c++版本

class Solution {
public:
    int StrToInt(string str) {
        //空字符串
        if(str.size()==0) return 0;
        //判断是否带符号
        bool isSign=false;
        if(str[0]=='+' || str[0]=='-')  isSign=true;
        //判断是否含其他非法符号
        for(int i=isSign+0;i        {
            if(str[i]>='0' && str[i]<='9') continue;
            else return 0;
        }
        //开始转换 转换方法:number*10+str[i]-'0'
        unsigned long number=0;
        for(int i=isSign+0;i
            number=number*10+str[i]-'0';
        }

        if(str[0]=='-') return -number;
        else return number;
    }
};

java版本

public class Solution {
    public int StrToInt(String str) {
        int res = 0;
        //正则合法检测
        if (!str.matches("\\+{0,1}\\-{0,1}[0-9]{1,}"))
            return res;
        int len = str.length();
        for (int i = len - 1; i >= (str.charAt(0) == '-' || str.charAt(0) == '+' ? 1 : 0); i--) {
            res += (int) Math.pow(10, (len - 1 - i)) * (str.charAt(i) - '0');
        }
        return str.charAt(0) == '-' ? -res : res;
    }

python版本

# -*- coding:utf-8 -*-
class Solution:
    def StrToInt(self, s):
        # write code here
        if s == "" or s == '+' or s == '-':
            return 0
        for i in s:
            if i == '+' or i == '-':
                continue
            if '0' '9':
                pass
            else:
                return 0
        return int(s)

4 唠嗑

2020年8月2日打卡,打卡格式"打卡XX天"。暖蓝汇聚大家一起,探讨简历修改,面试经历分享,尽全力让大家能在2020找到理想的工作。如果你想加入,加我拉你进面试交流群。

c15f8617e35d51400bf310fa46c6507b.png

[剑指offer]20二叉树的镜像[剑指offer]19连续子数组最大和[剑指offer]2替换空格[剑指offer]3从尾到头打印链表[剑指offer]4栈实现队列[剑指offer]5斐波那契数列[剑指offer]6跳台阶[剑指offer]8二进制中1的个数炸裂!万字长文拿下HTTP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值