Unity中做力扣算法题(Day2 整数转罗马数问题)

Tips(新手向):

1.创建一个Unity新项目。

2.在Hierarchy窗口下鼠标右键新建一个Cube。

3.在project的Assets文件夹下新建一个Scripts文件夹,鼠标右键新建一个c# Script并取名为Come(可自拟)。

4.在Hierarchy窗口点击Cube,在右边的Inspector窗口下点击Add Componet,搜索Come脚本并点击。或者可以直接用鼠标拖拽脚本挂到Cube上。

5.双击Come脚本并编辑(下方源码)。

6.ctrl+shift+c调出console窗口看调试结果(如图 传的参数是33)。

题目:

代码:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

public class Come : MonoBehaviour
{
    public string Number;
    
    readonly Tuple<int, string>[] valueSymbols = {
        new Tuple<int, string>(1000, "M"),
        new Tuple<int, string>(900, "CM"),
        new Tuple<int, string>(500, "D"),
        new Tuple<int, string>(400, "CD"),
        new Tuple<int, string>(100, "C"),
        new Tuple<int, string>(90, "XC"),
        new Tuple<int, string>(50, "L"),
        new Tuple<int, string>(40, "XL"),
        new Tuple<int, string>(10, "X"),
        new Tuple<int, string>(9, "IX"),
        new Tuple<int, string>(5, "V"),
        new Tuple<int, string>(4, "IV"),
        new Tuple<int, string>(1, "I")
    };

    public void Update()
    {
        IntToRoman(33);
    }


    void IntToRoman (int num)
    {
        StringBuilder roman = new StringBuilder();
        foreach (Tuple<int, string> tuple in valueSymbols)
        {
            int value = tuple.Item1;
            string symbol = tuple.Item2;
            while (num >= value)
            {
                num -= value;
                roman.Append(symbol);
            }
            if (num == 0)
            {
                break;
            }
        }
        Number =  roman.ToString();
        Debug.Log(Number);
    }

}

注释:

   看到这里,很多同学会好奇一个问题就是,我明明没有定义2,3,6这些数,但是也能输出是为什么,首先看代码,所有的问题答案都在代码里面。

   首先先new了一堆元组,刚看你可能有点懵,Tuple是什么,你可以理解为多啦A梦的口袋,和class等其他数据容器比起来,他更简单灵活,我们的valueSymbols里面是没有定义2,3,6这些数的,但是直接看到for遍历下的while判断,你就恍然大悟了,以3为例,其实执行了3次while循环,每次加 I(罗马数字),最后打印出 III(罗马数字)。

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>