MS面接問題のテスト

3755 ワード

1、大きさのある文字、数字からなる文字列を並べ替え、例えばEBa 37-->37 BEa
            string inputs = "EBa37";
            char[] result = inputs.ToCharArray();
            char copyInputs;
            for (int i = 0; i < result.Length - 1; i++)
            {
                for (int j = i; j < result.Length; j++)
                {
                    if (result[i] > result[j])
                    {
                        copyInputs = result[j];
                        result[j] = result[i];
                        result[i] = copyInputs;
                    }
                }
            }
        }

2、入力が水仙状かどうかを判断する.例えば66566、2 b 22 b 2は、123321 kは
            string inputs = "123321k";
            int stringLength = inputs.Length;
            bool isFlower = true;
            for (int i = 0; i < stringLength / 2; i++)
            {
                if (inputs[i] != inputs[stringLength - i - 1])
                {
                    isFlower = false;
                    break;
                }
            }

3、変換2進数、8進数、16進数で表される数字をDecimalタイプに変換し、任意に言語を選択し、言語内部で実現するタイプ変換関数/方法を使用してはならない
使用する場合.NETが提供する変換則:Console.Write(Convert.ToInt32("101", 8));
        static void ConvertType(string value, int type)
        {
            double currentType = Convert.ToDouble(type.ToString());
            decimal hello = 0;
            int powIndex = -1;
            for (int i = value.Length - 1; i >= 0; i--)
            {
                powIndex++;
                if (Convert.ToDouble(value[i].ToString()) != 0)
                {
                    hello += (decimal)System.Math.Pow(currentType, powIndex);
                }
            }
            Console.Write(hello);
        }

4、1つの配列の重複要素を取り出して配列の末尾まで
(1)繰り返しを配列の末尾に置く
            string stringInputs = "benqbqcbqs";
            char[] userChar = stringInputs.ToCharArray();
            List<string> list = new List<string>();
            StringBuilder sbRepeateObject = new StringBuilder(userChar.Length);
            string userObject = "";
            for (int i = 0; i < userChar.Length; i++)
            {
                userObject = userChar[i].ToString();
                if (!list.Contains(userObject))
                {
                    list.Add(userObject);
                }
                else
                {
                    sbRepeateObject.Append(userObject.ToString());
                }
            }
            list.Add(sbRepeateObject.ToString());

(2)重複するすべての文字を配列の末尾に置く
            string stringInputs = "benqbqcbqs";
            string repeatString = "";
            string originString = "";
            string currentString = "";
            for (int i = 0; i < stringInputs.Length; i++)
            {
                currentString = stringInputs[i].ToString();
                if (Regex.Matches(stringInputs, currentString).Count == 1)
                {
                    originString += currentString;
                }
                else
                {
                    repeatString += currentString;
                }
            }
            Console.WriteLine(originString + repeatString);