zoukankan      html  css  js  c++  java
  • 2-String to Integer (atoi)

    实现atoi这个函数, public int atoi(String str),传入字符串str可以返回整数,请仔细考虑一下字符串的各种情况!

    String to Integer: Case分析

    1. 正常数字

    Sample:”123”,”0”,”1” ,"-1"

    1. 普通特殊字符:

    Sample: "000","001","-001"

    1. 正负号问题
      1. 含有正负号

    Sample: " -123", " +123", "-123", "+123","--123","++123","  -004500"

    1. 空格问题
      1. 含有空格

    Sample: " 123","123 123","123 "

    1. 包含特殊符号
      1. 字母,其它特殊符号

    Sample: "*123","*abc","~123","123~", "a123","12a3", "12+3","12-3"

    1. 空的字符串

    Sample: string.Empty,null,""," "

    1. 边界问题
      1. 正常或者超过Int32最大和最小值,输出最大 或最小Int32

    Sample: "-2147483648","2147483647"

    Sample: "-214748364800","214748364700"

    Snapshot:

                           

    Source Code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    //http://www.cnblogs.com/binyao/p/5026406.html
    
    namespace StringtoInteger
    {
        class Program
        {
            static void Main(string[] args)
            {
                string[] str = { string.Empty,null,""," ",
                                "0","1","123","000","001","-1","-001",
                                " 123","123 123","123 ",
                                " -123", " +123",
                                "-123", "+123","--123","++123","  -004500",
                                "*123","*abc","~123","123~",
                                "a123","12a3",
                                "12+3","12-3",
                                "-2147483648","2147483647",
                                "-214748364800","214748364700" };
                StringtoInteger(str);
            }
    
            public static void StringtoInteger(string[] str)
            {            
                Console.WriteLine("StringtoInteger Result is:");
                foreach (string s in str)
                {
                    Console.Write("Test Data:{0}", s);
                    Console.WriteLine("  Result:{0}", StringtoInteger(s));
                }
            }
    
            public static int StringtoInteger(string str)
            {
                int sign = 0;
                int i = 0;
                int result = 0;
    
                if (string.IsNullOrEmpty(str))
                {
                    return result;
                }
    
                while (i < str.Length && ((str[i] >= '0' && str[i] <= '9') || str[i] == ' ' || str[i] == '-' || str[i] == '+'))
                {
                    if (str[i] == ' ' && (result == 0 && sign == 0))
                    {
                        i++;
                    }
                    else if (str[i] == '+' && (result == 0 && sign == 0))
                    {
                        sign = 1;
                        i++;
                    }
                    else if (str[i] == '-' && (result == 0 && sign == 0))
                    {
                        sign = -1;
                        i++;
                    }
                    else if (str[i] >= '0' && str[i] <= '9')
                    {
                        if (result > (int.MaxValue - (str[i] - '0')) / 10)
                        {
                            if (sign == 0 || sign == 1)
                                return int.MaxValue;
                            return int.MinValue;
                        }
    
                        result = result * 10 + str[i] - '0';
                        i++;
                    }
                    else
                    {
                        if (sign == 0)
                            return result;
                        return result * sign;
                    }
                }
    
                if (sign == 0)
                    return result;
                return result * sign;
            }
        }
    }
    View Code
  • 相关阅读:
    如何在linux系统安装redis
    关于—单例模式
    2.观察者模式(发布-订阅模式)
    1.提供者模式
    提供者模式:提供者的实例化加锁
    为已有的类添加特性,常用于数据库生成的类模型
    C#特性
    JSON.parse(jsonStr)和eval('('+jsonStr+')')
    a标签的href和onclick
    查看SQL语句执行时间/性能测试
  • 原文地址:https://www.cnblogs.com/binyao/p/5026406.html
Copyright © 2011-2022 走看看