用php找出字符串中连续重复次数最多的字符,你有方法吗?

news/2024/10/9 2:22:12

 

找出字符串中连续重复次数最多的字符,这里总结了几种方法,不管是在开发中,还是在面试中都会遇到。

方法一

<?php 
$arr = str_split($str);
//字符串分隔到数组中$arr = array_count_values($arr);
//用于统计数组中所有值出现的次数,返回一个数组//键名为原数组的键值,键值为出数
arsort($arr);//按键值倒序
echo "";
print_r($arr);

 

 

 

方法二:

<?php 
$arr = str_split($str);
$con = array();foreach ($arr as $v){if(!@$con[$v]){$con[$v]=1;}else{undefined$con[$v]++;}}arsort($con);
print_r($con);

 

 

 

方法三

<?php 
$arr = str_split($str);$unique = array_unique($arr);
//移除数组中重复的值,并返回结果数组(键名不变);
print_r($unique);foreach($unique as $v){undefined$arr2[$v] = substr_count($str,$v);//substr_count():计算某字符在字符串中出现的次数
}arsort($arr2);
print_r($arr2);

 

 

 

》》》程序员福利《《《

例子:

PHP面试过程中经常遇到这类算法题目:

<?php 
//找出字符串中连续重复次数最多字
$str = 'bbcccychrisQxnnddemdereeeeeffetcsssssssssssssfggdddreggggaggaggaaadddddddddddddaass';
$str_arr = str_split($str);//字符串拆解为数组
$map_arr = array_flip($str_arr);//数组键值反转(反转后会自动去重)
$over_arr = [];//结果数组
foreach ($str_arr as $k => $v) {if ($k == 0 || $v != $str_arr[$k - 1]) {$map_arr[$v] = $v;continue;}$map_arr[$v] .= $v;if (!isset($over_arr[$v]) || strlen($over_arr[$v])         $over_arr[$v] = $map_arr[$v];}
}
$result = [];
$max_len = 0;
foreach ($over_arr as $key => $value) {$str_len = strlen($value);if ($max_len         $max_len = $str_len;$result = [$key => $str_len];}if ($max_len == $str_len) {$result[$key] = $str_len;continue;}if ($max_len > $str_len) {continue;}
}
var_dump($over_arr,$result);

 

 

 

打印的结果如下:

 

https://www.shanhubei.com/archives/55316.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28012.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

WEB安全~X-Frame-Options

X-Frame-Options 是一个HTTP响应头,用于控制网页是否可以嵌套在 <frame>, <iframe>, <embed> 或者 <applet> 中。通过设置 X-Frame-Options 头部,网站管理员可以防止网页被嵌套到其他网站的框架中,从而有效防范点击劫持等安全风险。下面是关于 X-Fr…

微服务 - 作业调度 Hangfire集成式 仪表盘 DolphinScheduler分布式 定义流程

Hangfire,Client,Storage,Server,Dashboard,一次性作业任务,延迟作业,周期性定时作业,触发型作业任务,删除作业任务,作业队列,异常重试机制,原理机制与适用场景,DolphinScheduler,自定义业务流程,流程节点类型,串行并行逻辑节点,流程节点参数,数据源,流程实…

flutter 编译环境部署

一. 编译环境安装 1. 安装ubuntu20.04,详细的教程请看以下链接 VMware虚拟机下安装Ubuntu20.04(保姆级教程)_ubuntu 20.04 虚拟机-CSDN博客 2. 部署flutter环境,详细教程请参照以下链接 构建 flutter 应用程序 sony/flutter-elinux 维基 GitHub上 注意:在进行docker映射时…

智能决策新时代:可视化大屏是否能够超越传统白板?

前言 2015年,国务院提出了中国制造2025制造强国“三步走”规划,旨在推动中国制造业成为全球制造强国:第一个十年规划,2015-2025:中国制造业迈入制造强国行列,实现技术创新和产业升级。 第二个十年规划,2025-2035:中国制造业整体达到世界强国中等水平,推动产业智能化和…

day31-jQuery

1、jQuery介绍jQuery是什么jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的J…

VMware ESXi 7.0U3p macOS Unlocker Dell (戴尔) OEM 定制版自定义镜像 A20

VMware ESXi 7.0U3p macOS Unlocker Dell (戴尔) OEM 定制版自定义镜像 A20VMware ESXi 7.0U3p macOS Unlocker Dell (戴尔) OEM 定制版自定义镜像 A20 ESXi 7.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富…

毕设求助

毕业答辩一辩没过,老师说我的系统没什么用。说让我换个题目加两个功能,有没有大佬指导一下应该怎么做,往哪个方向去想大概界面就是这样,求大佬指点,有偿

用Golang做一个永久阻塞,有哪些小技巧 ?

用Golang做一个永久阻塞,有哪些小技巧 ? 磊丰 Go语言圈 2024-05-06 08:30 广东 听全文Go语言圈 Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长 159篇原创内容公众号学习与交流:…