此函数统计字母在给定字符串中出现的频率,并将其放入数组中(index是ascii-字母的数量,value是计数的出现次数)。现在我需要同时返回字母(它已经这样做了)和值。仅仅通过在线阅读,我不知道如何使用ref和alternatives来做到这一点。
static char MostCommonLetter(string s)
{
int[] occurrances = new int[255];
for (int i = 0; i < s.Length; i++)
{
if (char.IsLetter(s[i]))
{
int ascii = (int)s[i];
occurrances[ascii]++;
}
}
char maxValue = (char)Array.IndexOf(occurrances, occurrances.Max());
return maxValue;
}
发布于 2018-06-04 02:46:53
在C# 7和更高版本中,Value Tuples是您最好的选择。您可以按如下方式定义函数:
static (char letter, int occurrences) MostCommonLetter(string s)
{
int[] occurrences = new int[255];
for (int i = 0; i < s.Length; i++)
{
if (char.IsLetter(s[i]))
{
int ascii = (int)s[i];
occurrances[ascii]++;
}
}
char letter = (char)Array.IndexOf(occurrences, occurrences.Max());
return (index: letter, occurrences: occurrences);
}
然后,您可以像这样引用输出:
var (index, occurrences) = MostCommonLetter(yourString);
发布于 2018-06-04 03:08:23
您可以使用"out“参数从函数中返回其他参数。
static char MostCommonLetter(string s, out int maxOccurrance)
{
int[] occurrances = new int[255];
for (int i = 0; i < s.Length; i++)
{
if (char.IsLetter(s[i]))
{
int ascii = (int)s[i];
occurrances[ascii]++;
}
}
maxOccurrance = occurrances.Max();
char maxValue = (char)Array.IndexOf(occurrances, maxOccurrance);
return maxValue;
}
//...
// In C# 7 and above you can call it like that
var c = MostCommonLetter("abccd", out int maxOccurrance);
//// In older version of C# you should just declare out variable before use it
//int maxOccurrance;
//var c = MostCommonLetter("abccd", out maxOccurrance);
https://stackoverflow.com/questions/50669719
复制相似问题