zoukankan      html  css  js  c++  java
  • 【算法】 string 转 int

    【算法】 string 转 int

     遇到的一道面试题, 当时只写了个思路, 现给出具体实现 ,算是一种比较笨的实现方式

        public class StringToInt
        {
            /// <summary>
            /// 自己实现string转换成int
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static int ToInt(string str)
            {
                if (string.IsNullOrWhiteSpace(str)) // 空字符串直接返回0
                {
                    return 0;
                }
                bool isMinus = false; // 是否是负数
                int result = 0; // 返回结果
                for (int i = 0; i < str.Length; i++)
                {
                    int num = ToInt(str[i]);
                    if (num == -1) // 不是数字
                    {
                        return 0;
                    }
                    if (num == -2) // 负数的情况
                    {
                        if (i == 0) // 确实是负数
                        {
                            isMinus = true;
                        }
                        else // 字符串中间出现负号
                        {
                            return 0;
                        }
                    }
                    checked // 检查算术溢出
                    {
                        result += ToTens(num, str.Length - i - 1);
                    }
    
                }
                return isMinus ? 0 - result : result;
    
            }
    
            /// <summary>
            /// 将char转成int,注意-(负数),不能转的返回-1,负数返回-2
            /// </summary>
            /// <param name="c"></param>
            /// <returns></returns>
            private static int ToInt(char c)
            {
                switch (c)
                {
                    case '1':
                        return 1;
                    case '2':
                        return 2;
                    case '3':
                        return 3;
                    case '4':
                        return 4;
                    case '5':
                        return 5;
                    case '6':
                        return 6;
                    case '7':
                        return 7;
                    case '8':
                        return 8;
                    case '9':
                        return 9;
                    case '0':
                        return 0;
                    case '-':
                        return -2;
                }
                return -1;
            }
    
            /// <summary>
            /// 根据位数获取对应的数字
            /// </summary>
            /// <param name="i"></param>
            /// <param name="index"></param>
            /// <returns></returns>
            private static int ToTens(int i, int index)
            {
                if (i <= 0)
                {
                    return 0;
                }
                for (int j = 0; j < index; j++)
                {
                    i = i * 10;
                }
                return i;
            }
        }
  • 相关阅读:
    Daily Recording 2020/01/09(关键词:1月01版,RouterScan)
    SQL语句技巧(转)
    实施的WinForms键盘快捷键方法
    日常问题汇总(1) 分组筛选
    设计模式 创建型设计模式
    TSQL查询逻辑查询处理
    无法嵌入互操作类型错误处理
    设计模式 创建模式
    设计模式 结构模式
    设计模式 行为模式
  • 原文地址:https://www.cnblogs.com/fzz2727551894/p/4438108.html
Copyright © 2011-2022 走看看