第九十四课 编程题-回文串-最长连续天数
1.“回文串”是一个正读和反读都一样的字符串,比如“level”“noon”等就是“回文串”。请写程序判断读入的字符串是否是“回文串”。
string a = Console.ReadLine();
bool temp = false;
for(int i = 0; i < a.Length / 2; i++)
{
if (a[i] == a[a.Length - 1 - i])
{
temp = true;
}
else
{
temp = false;
break;
}
}
if (temp==false)
{
Console.Write("不是回文串");
}
else
{
Console.Write("是回文串。");
}
这里注意a[i]与a.Length的关系,前者是从0开始计算,后面是从1开始计算,所以两者条件要统一才可以比较并用于判断。
当字符串为偶数是不用解释了,头与尾一对一的比较。
当字符串为奇数时,中间的数字自然不用比较了,用循环次数限制一下即可,因为整数除以2时只保留整数位的,所以a.Length/2是整数。
2. 最近夏日炎热,令张三非常不爽。张三开始研究天气的变化,历经千辛万苦,他收集了连续N(1<N<1000000)天的最高气温数据。
现在他想知道气温一直上升的最长连续天数。
样例输入: 1352357839 样例输出:5
string str = Console.ReadLine();
string[] strArray = str.Split(" ");
int[] intArray = new int[strArray.Length];
for (int i = 0; i < strArray.Length; i++)
{
int number = Convert.ToInt32(strArray[i]);
intArray[i] = number;
}
int count = 1;
int maxDays = 0;
for (int i = 0; i < intArray.Length - 1; i++)
{
if (intArray[i] < intArray[i + 1])
{
count++;
}
else
{
if (count > maxDays)
{
maxDays = count;
}
count = 1;
}
}
if (count > maxDays)
{
maxDays = count;
}
Console.WriteLine("气温连续升高的最长天数为:" + maxDays + "天");
注解:
for (int i = 0; i < intArray.Length - 1; i++)
样例中数字个数为10,这里表示0到8,所以循环为9次(0-8月1-9是一样的)
if (intArray[i] < intArray[i + 1])
前面的数字小于后面的数字,语句为true,只有在语句为false时,也就是前面的数字大于后面的数字时,语句才会跳转到else下的if语句中( if (count > maxDays))执行判断来完成记录的比较次数,这里的count初始数值为1. 当intArray[8] < intArray[9]时,语句执行循环到了尽头,而语句执行也停止在了count++此时count的值为2,此时程序向下继续执行 if (count > maxDays),但这是if语句判断条件为false所以maxDays的值保持上次结果并输出。