[1014]-福尔摩斯的约会
题目解析传送门:https://blog.csdn.net/LITTENg/article/deta...
public function test()
{
// 字条Note
$n1 = '3485djDkxh4hhGE';
$n2 = '2984akDfkkkkggEdsb';
$n3 = 's&hgsfdk';
$n4 = 'd&Hyscvnm';
// 转换成:日期缩写
$week = ['A'=>'MON', 'B'=>'TUE', 'C'=>'WED', 'D'=>'THU', 'E'=>'FRI', 'F'=>'SAT', 'G'=>'SUN'];
$flag = 0; // 0日期 、 1小时
$n1_len = strlen($n1); // 字条n1的字符串长度
$n3_len = strlen($n3); // 字条n3的字符串长度
// 循环比较n1 n2
for ($i=0; $i < $n1_len ; $i++) {
if ($flag == 0) {
// 星期 && 同位置的字符相等 && 为字母 && 字符范围是 A - G
if ($n1[$i] === $n2[$i] && $n1[$i] >= 'A' && $n1[$i] <= 'G') {
$res[] = $week[$n1[$i]];
$flag = 1;
continue;
}
} else {
// 小时 && 同位置的字符相等 && 字符范围是 0 - 9 、A - N
if ($n1[$i] === $n2[$i] && preg_match('/[0-9A-N]/', $n1[$i])) {
// ord($n1[$i]) - 65 + 9 + 1
$res[] = ctype_alpha($n1[$i]) ? ord($n1[$i]) - 55 : '0' . $n1[$i];
break;
}
}
}
// 循环比较n3 n4
for ($i=0; $i < $n3_len; $i++) {
// 分钟 && 同位置的字符相等 && 为字母
if ($n3[$i] === $n4[$i] && preg_match('/[a-zA-Z]/', $n3[$i])) {
if (isset($res)) {
// 字符位置就是分钟:记录相等字符的位置,从0开始
$res[] = $i > 9 ? : '0' . $i;
break;
}
}
}
echo $res[0] . ' ' . $res[1] . ':' . $res[2];
}
笔记:
PHP字符类型检测的内置扩展:ctype
ctype_alnum — 做字母和数字字符检测
ctype_alpha — 做纯字符检测
ctype_digit — 做纯数字检测
ctype_lower — 做小写字符检测
ctype_upper — 做大写字母检测
ctype_space — 做空白字符检测
//测试是否是纯数字
preg_match('/\d/', $char)
//测试是否是纯字符
preg_match('/[a-zA-Z]/', $char)
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: