C# 根據提供的數字和符號 輸出可能的最大的數值

題目來coding game 的社區puzzle:the greatest number,有0-9,-,. 共12個字符,給你任意的組合(字符可重複),輸出最大的數值。

我的代碼:

using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
 static void Main(string[] args)
        {
            int N = int.Parse(Console.ReadLine());
            string input = Console.ReadLine().Replace(" ","");
            List<char> inputCharList = new List<char>(input.ToCharArray());
            List<char> outputCharList = new List<char>();

            if(input.Contains("-"))
            {
                outputCharList.Add('-');
                inputCharList.Remove('-');
                if(input.Contains("."))
                {
                    inputCharList.Remove('.');
                    inputCharList.Sort();
                    outputCharList.AddRange(inputCharList);
                    outputCharList.Insert(2,'.');
                }
                else
                {
                    inputCharList.Sort();
                    outputCharList.AddRange(inputCharList);
                }
            }
            else
            {
                if(input.Contains("."))
                {
                    inputCharList.Remove('.');
                    inputCharList.Sort();
                    inputCharList.Reverse();
                    outputCharList.AddRange(inputCharList);
                    outputCharList.Insert(outputCharList.Count-1,'.');      
                }
                else
                {
                    inputCharList.Sort();
                    inputCharList.Reverse();
                    outputCharList.AddRange(inputCharList);
                }
            }
            
            string output = new string(outputCharList.ToArray());
            Console.WriteLine(double.Parse(output));
        }
}



目前點贊最高的代碼如下:

using System;
using System.Linq;

class GreatestNumber
{
    static void Main()
    {
        // Not Used
        var N = Console.ReadLine();
        
        String inputs = String.Concat(Console.ReadLine().Where(x => x != ' '));        
        
        bool hadMinus = inputs.Contains("-"),
             hadDot   = inputs.Contains(".");
        
        String result = hadMinus ? String.Concat(inputs.OrderBy(c => c)) : String.Concat(inputs.OrderByDescending(c => c));   
        
        if(hadDot){
            result = result.Replace(".", "");
            result = result.Insert(hadMinus? 2 : result.Length-1, ".");                
        }
        
        // Trailing/leading 0
        Console.WriteLine(double.Parse(result));
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章