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
二维码