精华内容
下载资源
问答
  • public class 字符串转换整数 { public static void main(String[] args) { // 字符串转换整数 a = new 字符串转换整数(); System.out.println(myAtoi("fsaf")); } public static int myAtoi(String str) { .....
    public class 字符串转换整数 {
        public static void main(String[] args) {
    //        字符串转换整数 a = new 字符串转换整数();
            System.out.println(myAtoi("fsaf"));
    
        }
    
        public static int myAtoi(String str) {
            char[] chars = str.toCharArray();
            int n= chars.length;
            int idx=0;
    //        去除空格
            while (idx<n && chars[idx] == ' '){
                idx++;
            }
    //        去除空格到末尾
            if(idx == n) return 0;
            boolean negative=false;
    //        遇到负号
            if(chars[idx] == '-'){
                negative = true;
                idx++;
            }
    //        遇到正号
            else if(chars[idx] == '+'){
                idx++;
            }
    //        遇到其他符号
            else if (!Character.isDigit(chars[idx])){
                return 0;
            }
            int ans=0;
            while (idx<n && Character.isDigit(chars[idx])){
                int dight = chars[idx]-'0';
                if(ans>(Integer.MAX_VALUE-dight)/10){
    //                本来应该是ans*10+dight>Integer.MAX_VALUE
    //                但是*10和+dight都有可能越界,所以都移到右边即可
    //                判断它的结果是否越界
                    return negative ? Integer.MIN_VALUE:Integer.MAX_VALUE;
    
                }
                ans=ans*10+dight;
                idx++;
            }
            return negative ? -ans:ans;
        }
    }
    
    
    展开全文
  • 题目:实现一个atoi函数,使其能将字符转换整数 def myAtoi(self,str:str) str=str.strip() length=len(str) result=' ' i=0 if str=='-' orstr=='+'ofstr==' ': retrun 0 elif i<...

    题目:实现一个atoi函数,使其能将字符转换成整数

    	  def myAtoi(self,str:str)
    	  	str=str.strip()
    	  	length=len(str)
    	  	result=' '
    	  	i=0
    	  	if str=='-' orstr=='+'ofstr==' ':
    	  		retrun 0
    	  	elif i<length and str[i].isdigit():
    	  		while i<length and str[i].isdigit():
    	  			reslut+=str[i]
    	  			i+=1
    	  			if i==length:
    	  				break
    	  		if int(result)<=-2**31:
    	  			return(-2**31-1)
    	  		elif int(result)>=2**31-1:
    	  			return(2**31-1)
    	  		else:
    	  		        return(int(result))
    	          elif i<length and (str[i]=='-' or str[i]=='+'):
    	          	reult+=str[i]
    	          	i+=1
    	          	if i<length and str[i].isdigit():
    	          		while i<length and ste[i].isdigit() :
    	          			result+=str[i]
    	          			i+=1
    	          			if i==length:
    	          			break
    	          	         if int(result)<=-2**31:
    	          	         		return(-2**31)
    	          	         	elif int(result)>=2**31-1:
    	          	         		return(2**31-1)
    	          	         	else:
    	          	         		return (int(result))
    	                   else:
    	                   	return 0
    	             else:
    	            	return 0
    	          	         		
    	          	         
    	          	         		
    	         
    
    
    
    
    	  	
    
    
    
    
    
    展开全文
  • LeetCode 字符串转换整数 (atoi) 题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: ...

    LeetCode 字符串转换整数 (atoi)

    题目描述

    请你来实现一个 atoi 函数,使其能将字符串转换成整数。

    首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:

    • 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。
    • 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。
    • 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。

    注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换,即无法进行有效转换。

    在任何情况下,若函数不能进行有效的转换时,请返回 0 。

    提示:

    • 本题中的空白字符只包括空格字符 ' '
    • 假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

    示例 1:

    输入: "42"
    输出: 42
    

    示例 2:

    输入: "   -42"
    输出: -42
    解释: 第一个非空白字符为 '-', 它是一个负号。
         我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
    

    示例 3:

    输入: "4193 with words"
    输出: 4193
    解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
    

    示例 4:

    输入: "words and 987"
    输出: 0
    解释: 第一个非空字符是 'w', 但它不是数字或正、负号。
         因此无法执行有效的转换。
    

    示例 5:

    输入: "-91283472332"
    输出: -2147483648
    解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 
         因此返回 INT_MIN (−231) 。
    

    其实这个就是官方题解,我觉得很巧妙,所以来分享一下

    他采用了自动机的方法(本人刚好在学编译原理哈哈哈),将所有的状态分为四类 start(起始状态),signed(’+‘或’-'号),number(数字),end(结束状态)

    具体的状态之间的转换如下表

    ’ ’ +/- number other
    start start signed in_number end
    signed end end in_number end
    in_number end end in_number end
    end end end end end
    class Automaton {
        string state = "start";
        unordered_map<string, vector<string>> table = {//状态转换表,与上表对应
            {"start", {"start", "signed", "in_number", "end"}},
            {"signed", {"end", "end", "in_number", "end"}},
            {"in_number", {"end", "end", "in_number", "end"}},
            {"end", {"end", "end", "end", "end"}}
        };
        int getchar(char c){//与上面的无向图对应,决定了无向图二维下标
            if(isspace(c)) return 0;//为空格
            if(c == '+' or c == '-') return 1;//为 '+','-'
            if(isdigit(c)) return 2;//为数字
            return  3;//为其他
        }
    public:
        int sign = 1;//初始为1,因为当没有'+','-'号时默认是正数
        long long ans = 0;
        void getc(char c){
            state = table[state][getchar(c)];//找到对应的下一个状态
            if(state == "in_number"){//判断如果是数字,就将当前数字加入结果中
                ans = ans * 10 + c - '0';
                ans = sign == 1 ? min((long long)INT_MAX, ans) : min(-(long long)INT_MIN, ans);//判断是否超出范围是正数则与INT_MAX比较,负数则与INT_MIN比较
            }
            if(state == "signed"){//如果当前是'+'或'-'
                if(c == '+') sign = 1; //1表示正数
                else sign = -1;//-1表示负数
            }//其他情况不用写出来,因为到了end状态后就只可能到达end状态,不会到达任何有用的状态,或者说除了上面两个状态之外的状态不需要做任何的操作
        }
        
    };
    
    class Solution {
    public:
        int myAtoi(string str) {
            Automaton automaton;
            for(char c:str)
                automaton.getc(c);
            return automaton.sign * automaton.ans;//与符号位相乘,决定他的正负
        }
    };
    

    转载自leetcode

    我的个人博客 amazingz6.github.io
    我的bilibili https://space.bilibili.com/66908429
    我的CSDN https://blog.csdn.net/qq_44105654
    我的简书 https://www.jianshu.com/u/607ef08e5825
    我的github https://github.com/AmazingZ6?tab=repositories

    展开全文
  • LeetCode字符串转换整数 (atoi)(C语言)

    万次阅读 2019-03-14 23:28:04
    请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...

    请你来实现一个 atoi 函数,使其能将字符串转换成整数。

    首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

    当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

    该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

    注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

    在任何情况下,若函数不能进行有效的转换时,请返回 0。

    说明:

    假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

    示例 1:

    输入: "42"
    输出: 42
    

    示例 2:

    输入: "   -42"
    输出: -42
    

    解释: 第一个非空白字符为 ‘-’, 它是一个负号。
    我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
    示例 3:

    输入: "4193 with words"
    输出: 4193
    

    解释: 转换截止于数字 ‘3’ ,因为它的下一个字符不为数字。
    示例 4:

    输入: "words and 987"
    输出: 0
    

    解释: 第一个非空字符是 ‘w’, 但它不是数字或正、负号。
    因此无法执行有效的转换。
    示例 5:

    输入: "-91283472332"
    输出: -2147483648
    解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 
         因此返回 INT_MIN (−231) 。
    
    // aaa.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "stdio.h"
    #include "string.h"
    #include "stdlib.h"
    int myAtoi(char* str) {
    	int i=1;
    	double num=0;
    	int a=0;
    	while(*str==' ')
    	{
    			str++;     //消去空格
    			if(*str=='\0') return 0; 
    	}
        while(*str!='\0')
    	{
    	  if(*str==' ')
    	  {
    	    return (int)(num*i);
    	  }
    	   if(a==1&&(*str<'0'||*str>'9'))  return  (int)(num*i);  //前一位是数字
    	   if((*str=='-'||*str=='+')&&(*(str+1)<'0'||*(str+1)>'9'))  return 0;  //搭配为加号或减号和字母
    	  else if(a==0&&*str=='-')	     i=-1;                                 //前一位为空,此位是减号
    	  else if(a==0&&*str=='+')       i=1;
    	  else if(*str>='0'&&*str<='9') {a=1; num=num*10+(int)(*str-'0'); if((num*i)>INT_MAX) return INT_MAX; else if((num*i)<INT_MIN) return INT_MIN; }  //字母
    	  else  if(a==0&&(*str<'0'||*str>'9')) return 0;   //字母
    	  str++;
    	}
    	return (int)(num*i);
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    	 int n=myAtoi("-456798721456465a");
    	printf("%d",n);
    	getchar();
    	return 0;
    }
    
    
    

    在这里插入图片描述

    展开全文
  • Leetcode 字符串转换整数(atoi)

    千次阅读 2020-12-21 18:55:43
    字符串转换整数(atoi) 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个...
  • 字符串转换整数 (atoi) 题目 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导...
  • 请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
  • 请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
  • 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正...
  • 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正...
  • 请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号...
  • leetcode-初级算法-字符串-字符串转换整数 (atoi) 基本思想,分情况进行处理,每种情况的实现都类似。 注意:leetcode如果溢出会报错,我使用的VS溢出则为负数。 代码 int myAtoi(char* str) { int len,i,num; len...
  • 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为...
  • 字符串转换整数(atoi) 问题描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者...
  • @LeetCode字符串转换整数--String to Integer[C++]问题描述解决方法及复杂度问题程序实现 问题描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 说明: 假设我们的环境只能存储 32 位大小的有符号...
  • 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正...
  • 请你来实现一个atoi函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
  • 请你来实现一个 atoi 函数,使其能将字符串转换整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽...
  • 我的首先想法是正则表达式,原因是这是一个从字符串中寻找符合某种要求的字符串。 class Solution(object): def myAtoi(self, s): """ :type str: str :rtype: int """ #引入...
  • leetcode 字符串整数

    2019-05-16 10:09:55
    leetcode 字符串整数 java实现 实现 atoi,将字符串转为整数。 在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,417
精华内容 4,566
关键字:

leetcode字符串转换整数