写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成: 1.若干空格 2. (可选)一个符号字符(’+’ 或 ‘-‘) 3. 数字,字母,符号,空格组成的字符串表达式 4. 若干空格 转换算法如下: 1.去掉无用的前导空格 2.第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数 3.判断整数的有效部分: 3.1 确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回0 3.2 将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响 3.3  整数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231的整数应该被调整为 −231 ,大于 231 − 1 的整数应该被调整为 231 − 1 4.去掉无用的后导空格 数据范围: 1.0 <=字符串长度<= 100 2.字符串由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-‘ 和 ‘.’ 组成-笔试面试资料

这是qklbishe.com第18251 篇笔试面试资料
提供答案分析,通过本文《写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成: 1.若干空格 2. (可选)一个符号字符(’+’ 或 ‘-‘) 3. 数字,字母,符号,空格组成的字符串表达式 4. 若干空格
转换算法如下:
1.去掉无用的前导空格
2.第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数
3.判断整数的有效部分:
3.1 确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回0
3.2 将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响
3.3  整数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231的整数应该被调整为 −231 ,大于 231 − 1 的整数应该被调整为 231 − 1
4.去掉无用的后导空格

数据范围: 1.0 <=字符串长度<= 100 2.字符串由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-‘ 和 ‘.’ 组成-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成:
1.若干空格
2.(可选)一个符号字符(’+’ 或 ‘-‘)
3. 数字,字母,符号,空格组成的字符串表达式
4. 若干空格

转换算法如下:
1.去掉无用的前导空格
2.第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数
3.判断整数的有效部分:
3.1 确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回0
3.2 将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响
3.3  整数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231的整数应该被调整为 −231 ,大于 231 − 1 的整数应该被调整为 231 − 1
4.去掉无用的后导空格

数据范围:
1.0 <=字符串长度<= 100
2.字符串由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-‘ 和 ‘.’ 组成
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成:         1.若干空格         2. (可选)一个符号字符('+' 或 '-')         3. 数字,字母,符号,空格组成的字符串表达式       4. 若干空格           转换算法如下:   1.去掉无用的前导空格   2.第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数   3.判断整数的有效部分:   3.1 确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回0   3.2 将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响   3.3  整数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231的整数应该被调整为 −231 ,大于 231 − 1 的整数应该被调整为 231 − 1   4.去掉无用的后导空格               数据范围:    1.0 &lt;=字符串长度&lt;= 100    2.字符串由英文字母(大写和小写)、数字(0-9)、' '、'+'、'-' 和 '.' 组成 我爱刷题,刷题打卡
#include <math.h>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return int整型
     */
    int StrToInt(string s) {
        // write code here
        long long int num = 0;//
        int siganl = 1;//正负标志位
        bool signal_count = 0;
        int k = 0;
        //遍历字符串
        while(k < s.size()){
            if(s[k] == ‘ ‘){
                if(signal_count)
                    break;
                else
                    k++;
            }                      
            else if(s[k] == ‘+’ || s[k] == ‘-‘) {              
               if(signal_count) break;
               else {
                    if(s[k] == ‘+’)
                        siganl = 1;
                    else if(s[k] == ‘-‘)
                        siganl = -1;
                    k++;
                    signal_count = 1;
               }       
            }
             else if(s[k] >= ‘0’ && s[k] <= ‘9’){//0-9
                num = num*10 + s[k] – ‘0’;
                k++;
                signal_count = 1;
                 if(num > pow(2,31)) {
                     num = pow(2,31);
                     break;
                 }
            }
            else if(s[k] == ‘-‘) k++,siganl = -1, signal_count = 1;
            else{//其它字符                               
                    break;                                                         
            }               
        }
        num *= siganl;
        if(num == (pow(2, 31)))
            num = pow(2,31) – 1;
        return num;
    }
};
2021-11-05 21:25:12 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成: 1.若干空格 2. (可选)一个符号字符(’+’ 或 ‘-‘) 3. 数字,字母,符号,空格组成的字符串表达式 4. 若干空格 转换算法如下: 1.去掉无用的前导空格 2.第一个非空字符为+或者-号时,作为该整数的正负号,如果没有符号,默认为正数 3.判断整数的有效部分: 3.1 确定符号位之后,与之后面尽可能多的连续数字组合起来成为有效整数数字,如果没有有效的整数部分,那么直接返回0 3.2 将字符串前面的整数部分取出,后面可能会存在存在多余的字符(字母,符号,空格等),这些字符可以被忽略,它们对于函数不应该造成影响 3.3  整数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231的整数应该被调整为 −231 ,大于 231 − 1 的整数应该被调整为 231 − 1 4.去掉无用的后导空格 数据范围: 1.0 <=字符串长度<= 100 2.字符串由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-‘ 和 ‘.’ 组成-笔试面试资料

提供最优质的资源集合

立即查看 了解详情