面试题
面试题
1. 以下是用C#实现找到数组中第二大的数字的算法:
int[] arr = { 10, 5, 20, 8, 12, 15 };
Console.WriteLine(f(arr));
static int f(int[] n)
{
int max = n[0];
int sec = n[0];
foreach (var i in n)
{
if (i > max)
{
sec = max;
max = i;
}
else if (i > sec && i != max)
{
sec = i;
}
}
return sec;
}
2. 以下是一个用C#编写的函数,用来判断一个字符串是否是回文。
static bool f(string s)
{
int left = 0;
int right = s.Length - 1;
while (left < right)
{
while (left < right && !char.IsLetterOrDigit(s[left])) left++;
while (left < right && !char.IsLetterOrDigit(s[right])) right--;
if (char.ToLower(s[left]) != char.ToLower(s[right])) return false;
left++; right--;
}
return true;
}
3. 写一个函数,反转输入的字符串。
string input2 = "Hello";
Console.WriteLine(f(input2));
static string f(string s)
{
char[] c = s.ToCharArray();
Array.Reverse(c);
return new string(c);
}