gpt4 book ai didi

c# - 查找数组中的最大值但是为字符分配了数字

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:55 24 4
gpt4 key购买 nike

我有个问题

A = 10
B = 11
C = 12
D = 13

我有一个字符数组“5623ADCB”

我想找到最大值 D = 13,但是当我使用 for 循环查找最大值时程序无法识别 D = 13。相反,它输出 D 的 ascii 值,我如何确保每次遇到 D 时,它都会被识别为 13 而不是它的 ascii 值?

谢谢大家的帮助

最佳答案

功能配方:制作一个从 Char 到 Int 的映射 - 使用 Max:

static int Map(char c)
{
return Int32.Parse (c.ToString(), System.Globalization.NumberStyles.HexNumber);
}

var max = "5623ADCB".Select (Map).Max ();

在这种情况下得到你 13 ;)


如果您关心内存和性能,这里有一个版本:

static int FindMax(string s)
{
s = s.ToUpper ();
var max = 0;
for (int i = 0; i < s.Length; i++) {
var v = Map (s [i]);
if (v > max)
max = v;
}
return max;
}

static int Map(char c)
{
if (c >= '0' && c <= '9')
return (int)c - (int)'0';
if (c >= 'A' && c <= 'E')
return (int)c - (int)'A' + 10;

throw new ArgumentOutOfRangeException ();
}

顺便说一句:如果您希望 D 为 13,我不知道为什么要使用 14 - 如果第一个是打字错误,那么您必须更改 上面的 Map 函数(如果你不想花哨的话,一个 switch 就可以了)——因为你的第一个定义与你从 Hex 中假设的完全一样,所以我接受了它。

关于c# - 查找数组中的最大值但是为字符分配了数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com