求高手,一个自动分析出手机号类型的算法(AAAA ABAB等,详细见帖子)
类型分为:AAAAA AAAA AAA AABBCC AABB AAABBB AABBB AAABB ABABAB ABAB AAAAB 升序ABCD 降序DCBA
我通过文本(手机号一个一行)将一组手机号导入到数据库里,需写一个算法,可以得到手机号的类型如手机号(15836998812)这样的为AABB(因为有9988是AABB型的,只要是两个相同的连在一起就可以如1133也是AABB的),15836888812,这样的就是AAAA型的,一共分为
AAAAA型的(如:15836999992,判断依据:99999)
AAAA型的(如:158365111152,判断依据:1111)
AAA型的(如:15836222712,判断依据:222)
AABBCC型的(如:15877889912,判断依据:778899)
AABB型的(如:15866779912,判断依据:6677)
AAABBB型的(如:15811122212,判断依据:111222)
AABBB型的(如:15855666212,判断依据:55666)
AAABB型的(如:15811122712,判断依据:11122)
ABABAB型的(如:15823232312,判断依据:22323)
ABAB型的(如:15836368963,判断依据:3636)
AAAAB(如:15811112569,判断依据:11112)
升序ABCD(如:158123478963,判断依据:1234)
降序DCBA(如:15843215698,判断依据:4321)
回复讨论(解决方案)
递归算看看
递归算看看
请说下详细的算法啊
先给一个测试代码
暂不处理升序降序的情况
$ar = array('15836999992','158365111152','15836222712','15877889912','15866779912','15811122212','15855666212','15811122712','15823232312','15836368963','15811112569','158123478963','15843215698',);$mode = array( 'AAAAA' => '(\d)\\1{4}', 'AAAA' => '(\d)\\1{3}', 'AAA' => '(\d)\\1{2}', 'AABBCC' => '(\d)\\1(\d)\\2(\d)\\3', 'AABB' => '(\d)\\1(\d)\\2', 'AAABBB' => '(\d)\\1{2}(\d)\\2{2}', 'AABBB' => '(\d)\\1(\d)\\2{2}', 'AAABB' => '(\d)\\1{2}(\d)\\2', 'ABABAB' => '(\d)(\d)\\1\\2\\1\\2', 'ABAB' => '(\d)(\d)\\1\\2', 'AAAAB' => '(\d)\\1{3}\d',// '升序ABCD' => '(\d)\\1{4}',// '降序DCBA' => '(\d)\\1{4}',);foreach($ar as $tel) { foreach($mode as $m=>$p) { if($tel != preg_replace_callback("/$p/", 'back', $tel)) { $r[$tel][] = $m; } }}function back($r) { if(count($r) == 2 && strlen($r[0]) > 2) return ''; if(count($r) == 3 && $r[1] == $r[2]-1) return ''; if(count($r) == 4 && $r[1] == $r[2]-1 && $r[1] == $r[3]-2) return ''; return $r[0];}print_r($r);
Array( [15836999992] => Array ( [0] => AAAAA [1] => AAAA [2] => AAA [3] => AAAAB ) [158365111152] => Array ( [0] => AAAA [1] => AAA [2] => AAAAB ) [15836222712] => Array ( [0] => AAA ) [15877889912] => Array ( [0] => AABBCC [1] => AABB ) [15866779912] => Array ( [0] => AABB ) [15811122212] => Array ( [0] => AAA [1] => AABB [2] => AAABBB [3] => AABBB [4] => AAABB ) [15855666212] => Array ( [0] => AAA [1] => AABB [2] => AABBB ) [15811122712] => Array ( [0] => AAA [1] => AABB [2] => AAABB ) [15823232312] => Array ( [0] => ABABAB [1] => ABAB ) [15811112569] => Array ( [0] => AAAA [1] => AAA [2] => AAAAB ))
先给一个测试代码
暂不处理升序降序的情况
PHP code
$ar = array(
'15836999992',
'158365111152',
'15836222712',
'15877889912',
'15866779912',
'15811122212',
'15855666212',
'15811122712',
'15823232312',
'158……
那请问能否提供下升降序的思路也可以的
先给一个测试代码
暂不处理升序降序的情况
PHP code
$ar = array(
'15836999992',
'158365111152',
'15836222712',
'15877889912',
'15866779912',
'15811122212',
'15855666212',
'15811122712',
'15823232312',
'158……
'AAAAA' => '(\d)\\1{4}' 这段正则是什么意思呢
'AAAAA' => '(\d)\\1{4}' 这段正则是什么意思呢
(\d) 表示匹配到一个数字
\\1{4} 表示前面匹配到的数字要重复4次
于是他可以匹配
11111、22222、33333、44444、55555、66666、77777、88888、99999、00000
升降序不能用正则表示出来,需要另行判断
$ar = array('15811112569','158123478963','15843215698',);foreach($ar as $tel) { $u = 0; $d = 0; $t = str_split($tel); for($i=1; $i<count($t); $i++) { $u = $t[$i] == $t[$i-1]+1 ? $u+1 : 0; $d = $t[$i] == $t[$i-1]-1 ? $d+1 : 0; if($u >= 3) { echo "升序 $tel\n"; break; } if($d >= 3) { echo "降序 $tel\n"; break; } }}
降序 15843215698
先给一个测试代码
暂不处理升序降序的情况
PHP code
$ar = array(
'15836999992',
'158365111152',
'15836222712',
'15877889912',
'15866779912',
'15811122212',
'15855666212',
'15811122712',
'15823232312',
'158……
那个正则 的 还是看的不太懂,说下原理吧
先给一个测试代码
暂不处理升序降序的情况
PHP code
$ar = array(
'15836999992',
'158365111152',
'15836222712',
'15877889912',
'15866779912',
'15811122212',
'15855666212',
'15811122712',
'15823232312',
'158……
尤其是back函数这块 没看懂
先给一个测试代码
暂不处理升序降序的情况
PHP code
$ar = array(
'15836999992',
'158365111152',
'15836222712',
'15877889912',
'15866779912',
'15811122212',
'15855666212',
'15811122712',
'15823232312',
'158……
此算法有点问题啊 如果是一个 15877998917这样的 应该也是AABB型的 但是他并不能分析出来哎
7楼不错,学习啦

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Alipay PHP...

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.
