• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php实现密码验证合格程序(复杂问题分类,超简单的)(分类+规范编码) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、总结

一句话总结:复杂问题分类,超简单的。分类+规范编码。

 

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

输入

复制
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

输出

复制
OK
NG
NG
OK

 

代码:

 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 ?>

 

 

 

 

 

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
总结php删除html标签和标签内的内容的方法发布时间:2022-07-10
下一篇:
WP8_(windowsphone环境下)上传文件从C#到php接口发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap