c#十進制轉二進制算法 和字符串反轉算法


去某軟面試 面試官給個題上黑板做,寫個算法 求95轉2進制后1的個數。

我在黑板上敲了

static int count = 0;
        /// <summary>
        /// 獲取10進制數轉2進制后中1的個數
        /// </summary>
        public static void BinCount(int a)
        {
            int n = -1;
            int b = 0;
            while(b<=a)
            {
                n++;
                b = (int)Math.Pow(2, n);
            }
            count++;
            var m = (int)Math.Pow(2, n - 1);
            if (a - m <= 0)
            {
                return;
            }
            BinCount(a - m);
        }

  下面是main函數調用  返回的結果是6 完全正確。

static void Main(string[] args)
        {
            BinCount(95);
            var binCount= count;
        }

 其實面試官是考你怎么把10進制轉成2進制 要求寫出10進制轉2進制的算法

於是乎我又寫了如下:

        static string str =string.Empty;
        /// <summary>
        /// 10進制轉2進制
        /// </summary>
        /// <param name="a"></param>
        public static void GetBinary(int a)
        {
            if(a % 2 == 0)
            {
                str += "0";
            }
            else
            {
                str += "1";
            }
            if(a / 2<1)
            {
                return;
            }
            GetBinary(a / 2);
        }  

應該用

StringBuilder 只有一個指針 不然空間會浪費很多

下面是main 函數調用 結果是 1111101

static void Main(string[] args)
        {

            GetBinary(95);
            var binarya = str;
        }

  好吧 結果 是反的,那再考你一個 字符串反轉。給你個 “abcd”  給我返回“dcba”

我又寫了下面反轉方法:

/// <summary>
        /// char數組反轉
        /// </summary>
        /// <param name="str"></param>
        public static void Reverse(char[] str)
        {
            if (str == null)
            {
                return;//空判斷這個細節一定不能漏
            }
            int i = 0;
            while(i<str.Length-1-i)
            {
                var tem = str[i];
                str[i] = str[str.Length -1- i];
                str[str.Length -1- i] = tem;
                i++;
            }
        }

  於是乎 二進制的也就完整了  返回的binary =1011111

static void Main(string[] args)
        {

            GetBinary(95);
            var binary = str;
            char[] arr = str.ToCharArray();
            Reverse(arr);
            binary = new string(arr);
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM