您的位置:首页 > 其它

String to Integer(字符串转换成数字—leetcode)

2016-11-21 22:12 411 查看
题目:

Implement atoi to convert a string to an integer.

注意问题:

1. 判断字符串是否为空字符串;

2. long long 范围:[–9,223,372,036,854,775,808 - 9,223,372,036,854,775,807];

3. 注意:不要漏了要判断+号的情况  ;

4. isdigit--- 测试字符串 *str 是否具有数字特征;

5. 字符串的ASK码减去‘0’的ASK码即为该数字的大小;

6. 字符串从前到后排序得到数字(例如:“123”为:1,1*10+2,(1*10+2)*10+3)。

实现代码:

class Solution



public: 

 int myAtoi(string str)  

 { 

  if (str.empty())

  {

   return 0;

  }

//   if(*str == '\0') //注意:判断空字符串数组 

//   {

//    return 0;

//   } 

  long long llnum = 0; //long long 范围:[–9,223,372,036,854,775,808 - 9,223,372,036,854,775,807]

  int sign = 1; 

  int index=0;

  while (str[index] == ' ') 

  { 

   index++; 

  } 

  if (str[index] == '-') 

  { 

   sign = -1; 

   index++; 

  } 

  else if(str[index] == '+')  //注意:不要漏了要判断+号的情况 

  { 

   index++; 

  } 

  while (isdigit(str[index]))  //isdigit--- 测试字符串 *str 是否具有数字特征

  { 

   int i = str[index] - '0';     //ASK码相减得到数字

   llnum = llnum*10 + i;   //字符串从前到后排序得到数字(例如:“123”为:1,1*10+2,(1*10+2)*10+3);

   if (llnum*sign > INT_MAX) 

   { 

    llnum = INT_MAX; 

    break; 

   } 

   else if (llnum*sign < INT_MIN) 

   { 

    llnum = INT_MIN; 

    break; 

   } 

   index++; 

  } 

  return int(sign*llnum); 

 } 

};


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐