コード例 #1
0
        static void Main(string[] args)
        {
            ArrayList arrayList = new ArrayList();
            string    astr      = "123";
            string    bstr      = "123";

            Console.WriteLine($"astr==bstr 是 {astr == bstr}");
            Console.WriteLine($"astr.Equals(bstr) 是 {astr.Equals(bstr)}");

            Copy copya = new Copy()
            {
                Age = "1", name = "a"
            };
            Copy copyb = new Copy()
            {
                Age = "1", name = "a"
            };

            Console.WriteLine($"copya==copyb 是 {copya == copyb}");
            Console.WriteLine($"copya.Equals(copyb) 是 {copya.Equals(copyb)}");
            //Thread thread = new Thread(PrintNumbers);
            //thread.Start();
            //PrintNumbers();
            //Console.ReadLine();
            //return;

            Father father = new Father();

            father.PrintNew();
            father = new Son();
            father.PrintNew();
            Copy copy = new Copy()
            {
                Age = "1", name = "a"
            };
            var copy2 = copy.Clone();

            if (copy == copy2)
            {
                Console.WriteLine("copy==copy2");
            }
            var copy3 = copy;

            if (copy == copy3)
            {
                Console.WriteLine("copy==copy3");
            }
            string s1 = "1\\//2\\//3\\//4";
            var    s2 = s1.Split("\\//");

            if (Program.a is System.ValueType)
            {
                Console.WriteLine("Program.a is System.ValueType");
            }
            Ref(ref Program.a);
            Ref2(out Program.a);
            #region  借用第三个变量,怎么把a,b的值互换
            int a = 3;
            int b = 5;
            Console.WriteLine(string.Format("不借用第三个变量,怎么把a,b的值互换,改变前a={0},b={1}", a, b));
            Helper.Exchange(ref a, ref b);
            Console.WriteLine(string.Format("不借用第三个变量,怎么把a,b的值互换,改变后a={0},b={1}", a, b));
            Console.WriteLine();
            #endregion

            #region 1-2+3-4+……+m
            Console.WriteLine(string.Format("1-2+3-4+……+m,方法一Sum(5)={0}", Helper.Sum(5)));
            Console.WriteLine(string.Format("1-2+3-4+……+m,方法二Sum2(5)={0}", Helper.Sum2(5)));
            Console.WriteLine();
            #endregion

            #region 1、1、2、3、5、8、13、21、34......  求第30位数是多少
            Console.WriteLine(string.Format("1、1、2、3、5、8、13、21、34......  求第30位数是多少,方法一Foo(50)={0}", Helper.Foo(30)));
            Console.WriteLine();
            #endregion

            #region 数组反转置顶开始位置和结束位置
            int[]    arryInt    = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            string[] arryString = { "a", "b", "c", "d" };
            Console.WriteLine(string.Format("数组反转置前arryInt={0}", string.Join(",", arryInt)));
            Helper.Reverse <int>(arryInt, 0, 1);
            Console.WriteLine(string.Format("数组反转置后arryInt={0}", string.Join(",", arryInt)));

            Console.WriteLine(string.Format("数组反转置前arryString={0}", string.Join(",", arryString)));
            Helper.Reverse <string>(arryString, 0, 2);
            Console.WriteLine(string.Format("数组反转置后arryString={0}", string.Join(",", arryString)));

            Console.WriteLine();
            #endregion

            #region  除集合给定元素
            ArrayList aList = new ArrayList {
                'a', 'b', 'c', 'c', 1, 1, 2
            };
            Console.WriteLine(string.Format("删除集合给定元素前aList={0}", string.Join(",", aList)));
            Helper.deleteForm(aList, 1);
            Console.WriteLine(string.Format("删除集合给定元素后aList={0}", string.Join(",", aList)));


            List <string> bList = new List <string> {
                "a", "b", "c", "c", "1", "2", "3", "1"
            };
            Console.WriteLine(string.Format("删除集合给定元素前aList={0}", string.Join(",", bList)));
            Helper.deleteForm(bList, "1", true);
            Console.WriteLine(string.Format("删除集合给定元素后aList={0}", string.Join(",", bList)));
            Console.WriteLine();
            #endregion

            #region 数组合并去重
            int[] arryA = { 1, 2, 3, 4, 4, 5 };
            int[] arryB = { 3, 5, 6 };
            //string[] outputA = Array.ConvertAll<int, string>(arryA, i => i.ToString());
            Console.WriteLine(string.Format("数组合并去重数组arryA={0}", string.Join(",", arryA)));
            //string[] outputB = Array.ConvertAll<int, string>(arryB, i => i.ToString());
            Console.WriteLine(string.Format("数组合并去重数组arryB={0}", string.Join(",", arryB)));

            var resultArray = Helper.CombinedArrayNew <int>(arryA, arryB);
            //string[] outputResult = Array.ConvertAll<int, string>(resultArray, i => i.ToString());
            Console.WriteLine(string.Format("数组合并去重数组resultArray={0}", string.Join(",", resultArray)));
            Console.WriteLine();
            #endregion

            #region 两个数组  [n] [m]  n>m  第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。
            int[] n = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
            int[] m = new int[10];
            Helper.GetArr(n, m);
            Console.WriteLine(string.Format("数组outputM={0}", string.Join(",", m)));
            Helper.GetArr2(n, m);
            Console.WriteLine(string.Format("数组outputM={0}", string.Join(",", m)));
            Helper.GetArrNew(n, m);
            Console.WriteLine(string.Format("取最大数组outputM={0}", string.Join(",", m)));
            Helper.GetArr2New(n, m);
            Console.WriteLine(string.Format("取最大数组outputM={0}", string.Join(",", m)));
            Console.WriteLine();
            #endregion

            #region 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
            var      array       = Helper.CreateArr(10);
            string[] outputArray = Array.ConvertAll <int, string>(array, i => i.ToString());
            Console.WriteLine(string.Format("数组outputArray={0}", string.Join(",", outputArray)));

            var arrayNew = Helper.CreateArr(10, 1, 10);
            Console.WriteLine(string.Format("数组outputArray={0}", string.Join(",", arrayNew)));
            Console.WriteLine();
            #endregion

            #region 字符串处理

            #region 字符串倒序输出
            string str1 = "123456";
            Console.WriteLine(string.Format("字符串倒序输出前str1={0}", str1));
            str1 = Helper.Reverse(str1);
            Console.WriteLine(string.Format("字符串倒序输出后str1={0}", str1));
            Console.WriteLine();
            #endregion

            #region 请将字符串"I am a student"按单词逆序输出如"student a am I"
            string str2 = "I am a student";
            Console.WriteLine(string.Format("按单词逆序输出前str2={0}", str2));
            str2 = Helper.ReverseWord(str2);
            Console.WriteLine(string.Format("按单词逆序输出后str2={0}", str2));
            Console.WriteLine();
            #endregion

            #endregion

            #region 一口井深7米,一直蜗牛往上爬,白天爬3米,晚上掉2米。几天爬出去
            int iOut = Helper.Out();
            Console.WriteLine(string.Format("一口井深7米,一直蜗牛往上爬,白天爬3米,晚上掉2米。几天爬出去。iOut={0}", iOut));
            Console.WriteLine();
            #endregion


            #region 冒泡排序
            int[] arrySoftByBubble = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
            Helper.SoftByBubble(arrySoftByBubble, false);
            Console.WriteLine($"冒泡排序排序后={string.Join(",", arrySoftByBubble)}");

            Helper.SoftByBubble(arrySoftByBubble, true);
            Console.WriteLine($"冒泡排序排序后={string.Join(",", arrySoftByBubble)}");
            Console.WriteLine();

            int[] arrySoftBySelect = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
            Helper.SoftBySelect(arrySoftBySelect, false);
            Console.WriteLine($"选择排序排序后={string.Join(",", arrySoftBySelect)}");
            Console.WriteLine();

            int[] arrySoftByInsert = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
            Helper.SoftByInsert(arrySoftByInsert, true);
            Console.WriteLine($"插入排序排序后={string.Join(",", arrySoftByInsert)}");
            Console.WriteLine();
            #endregion

            #region  一个8个数的数组{1,2,3,3,4,5,6,6},计算其中不重复数字的个数。
            int[] arryCalNotRepeat = { 1, 2, 3, 3, 4, 5, 6, 6 };
            //CalNotRepeat(arryCalNotRepeat);
            Console.WriteLine($"计算后={Helper.CalNotRepeat(arryCalNotRepeat)}");
            Console.WriteLine($"计算后2={Helper.CalNotRepeatNew(arryCalNotRepeat)}");
            Console.WriteLine($"计算后2={Helper.CalNotRepeatNew2(arryCalNotRepeat)}");
            Console.WriteLine();
            #endregion

            #region 打印三角形
            Helper.InvertedPrintTriangle(10);
            Helper.PrintTriangle(10);
            #endregion

            #region 进制转换
            int converNumber = -100;
            Console.WriteLine($"转换前{converNumber},转换后{Helper.Conver(converNumber, "0123", 4)}");
            #endregion

            #region 求s=a+aa+aaa  例如2+22+222
            Console.WriteLine($"求和结果:{Helper.Sum3(2, 3)}");
            Console.WriteLine($"求和结果:{Helper.Sum3(2, 4)}");
            #endregion

            #region 字符串查找第一个不重复的字母
            Console.WriteLine($"求和结果:{Helper.FindChar("aa")}");
            #endregion

            #region 一球从100米高度自由落下
            decimal sum;
            decimal now;
            Helper.Run(100, 0.5m, 1, out sum, out now);
            Console.WriteLine($"求和结果:sum={sum},now={now}");
            Helper.Run(100, 0.5m, 3, out sum, out now);
            Console.WriteLine($"求和结果:sum={sum},now={now}");
            Helper.Run(100, 0.5m, 10, out sum, out now);
            Console.WriteLine($"求和结果:sum={sum},now={now}");
            #endregion

            #region 求连续子数组的最大和
            int[] arr = { 1, -2, 1, 10, -4, 7, 2, -5 };//{ 1, 4, -5, 9, 8, 3, -6 };//{ 2, 3, -6, 4, 6, 2, -2, 5, -9 };//
            var   GetMaxAddAndArray = Helper.GetMaxAddAndArray(arr);
            Console.WriteLine($"求连续子数组的最大和:sum={GetMaxAddAndArray.Item1},arr={string.Join(',', (int[])GetMaxAddAndArray.Item2)}");
            var GetMaxAddAndArray2 = Helper.GetMaxAddAndArray2(arr);
            Console.WriteLine($"求连续子数组的最大和:sum={GetMaxAddAndArray2.Item1},arr={string.Join(',', (int[])GetMaxAddAndArray2.Item2)}");
            Console.WriteLine($"求连续子数组的最大和:sum={Helper.GetMaxAddOfArray3(arr)}");
            Console.WriteLine($"求连续子数组的最大和:sum={Helper.GetMaxAddOfArray4(arr)}");
            #endregion

            #region n阶台阶,一次走一步或两步,有多少种走法
            //Console.WriteLine($"走阶梯算法0:sum={Helper.findStep2(0)}");
            Console.WriteLine($"走阶梯算法1:sum={Helper.findStep2(1)}");
            Console.WriteLine($"走阶梯算法2:sum={Helper.findStep2(2)}");
            Console.WriteLine($"走阶梯算法3:sum={Helper.findStep2(3)}");
            Console.WriteLine($"走阶梯算法4:sum={Helper.findStep2(4)}");
            Console.WriteLine($"走阶梯算法5:sum={Helper.findStep2(5)}");
            #endregion

            #region  找出一个数组中重复次数大于minTimes的数字
            int[]    arrFindDuplication = { 1, 2, 5, 1, 3, 1, 9, 20, 15, 5, 2, 9, 3, 15, 2 };
            var      temp = Helper.FindDuplication(arrFindDuplication, 5);
            string[] outputFindDuplication = Array.ConvertAll <int, string>(Helper.FindDuplicationLq(arrFindDuplication, 5), i => i.ToString());
            Console.WriteLine($"FindDuplication={string.Join(",", outputFindDuplication)}");
            #endregion

            char[] sss = "1234".ToCharArray();
            Helper.permutation(sss, 0);
            Console.ReadLine();
        }