在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、总结一句话总结:复杂问题分类,超简单的。分类+规范编码。
1、写的时候判断 不能有相同长度超2的子串重复 的时候,子串重复写成隔2位置了?应该是任意的 47 for($j=$ii+2;$j<$len;$j++){
2、分类,把大问题化小,就会非常简单? 4 //1、判断长度
5 if(!isLength($str)){
6 echo 'NG'.PHP_EOL;
7 }
8 //2、判断包括大小写字母.数字.其它符号,以上四种至少三种
9 else if(!isMulti($str)){
10 echo 'NG'.PHP_EOL;
11 }
12 //3、判断不能有相同长度超2的子串重复
13 else if(hasSubstr($str)){
14 echo 'NG'.PHP_EOL;
15 }else{
16 echo 'OK'.PHP_EOL;
17 }
3、写的时候判断 不能有相同长度超2的子串重复 的时候,返回逻辑出错?有相同子串返回true,没有相同子串返回false,逻辑弄反了 56 if($count==3) return true;
57
58 }
59
60 }
61 return false;
4、多组输入如何解决?while 3 while($str=trim(fgets(STDIN))){
5、判断 包括大小写字母.数字.其它符号,以上四种至少三种 怎么写?分类+正则+统计分类合格情况 26 function isMulti($str){
27 $myType=0;
28 //有数字
29 if(preg_match('/\d/',$str)) $myType++;
30 //有大写字母
31 if(preg_match('/[A-Z]/',$str)) $myType++;
32 //有小写写字母
33 if(preg_match('/[a-z]/',$str)) $myType++;
34 //有其它字符
35 $str2=preg_replace('/[A-Za-z0-9]/','',$str);
36 $len2=strlen($str2);
37 if($len2>=1) $myType++;
38
39 if($myType>=3) return true;
40 else return false;
41 }
二、密码验证合格程序题目描述密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:一组或多组长度超过2的子符串。每组占一行 输出描述:如果符合要求输出:OK,否则输出NG
代码:1 <?php 2 //分类来解决情况比较多或者稍微复杂一点的情况 3 while($str=trim(fgets(STDIN))){ 4 //1、判断长度 5 if(!isLength($str)){ 6 echo 'NG'.PHP_EOL; 7 } 8 //2、判断包括大小写字母.数字.其它符号,以上四种至少三种 9 else if(!isMulti($str)){ 10 echo 'NG'.PHP_EOL; 11 } 12 //3、判断不能有相同长度超2的子串重复 13 else if(hasSubstr($str)){ 14 echo 'NG'.PHP_EOL; 15 }else{ 16 echo 'OK'.PHP_EOL; 17 } 18 } 19 20 function isLength($str){ 21 $len=strlen($str); 22 if($len>8) return true; 23 else return false; 24 } 25 26 function isMulti($str){ 27 $myType=0; 28 //有数字 29 if(preg_match('/\d/',$str)) $myType++; 30 //有大写字母 31 if(preg_match('/[A-Z]/',$str)) $myType++; 32 //有小写写字母 33 if(preg_match('/[a-z]/',$str)) $myType++; 34 //有其它字符 35 $str2=preg_replace('/[A-Za-z0-9]/','',$str); 36 $len2=strlen($str2); 37 if($len2>=1) $myType++; 38 39 if($myType>=3) return true; 40 else return false; 41 } 42 43 function hasSubstr($str){ 44 $len=strlen($str); 45 for($i=0;$i<$len;$i++){ 46 $ii=$i; 47 for($j=$ii+2;$j<$len;$j++){ 48 $jj=$j; 49 $count=0; 50 while($jj<$len&&$count<=2&&$str[$ii]==$str[$jj]){ 51 //echo $str[$ii]." ".$str[$jj].PHP_EOL; 52 $ii++; 53 $jj++; 54 $count++; 55 } 56 if($count==3) return true; 57 58 } 59 60 } 61 return false; 62 } 63 64 ?>
|
2022-08-18
2022-08-17
2022-08-15
2022-11-06
2022-08-17
请发表评论