C# 根据提供的数字和符号 输出可能的最大的数值

4 篇文章 0 订阅

题目来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));
    }
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值