[PHP] 算法-字符串的左循环的PHP实现
2023-02-18 15:41:50 时间
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 1.字符串翻转,前n位取模长度,abc翻转成cba 后面的翻转成fedXYX ,然后再统一翻转 XYZdefabc 2.第二种思路,字符串复制一份拼接在一起,截取从n开始到len长度的子字符串,n也是要取模
<?php function LeftRotateString($str,$n){ $len=strlen($str); $n=$n%$len; swap($str,0,$n-1); swap($str,$n,$len-1); swap($str,0,$len-1); return $str; } function swap(&$str,$start,$end){ while($start<$end){ $temp=$str{$start}; $str{$start++}=$str{$end}; $str{$end--}=$temp; } } $a="abcAbce"; $s=LeftRotateString($a,13); var_dump($s);
相关文章
- IdentityServer4 实现 OpenID Connect 和 OAuth 2.0
- 一年的回顾:我的领域驱动设计之路
- DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(1)
- 2014 Visual Studio Contact(); 直播笔记
- 结婚虽易,终老不易:EntityFramework和AutoMapper的婚后生活
- 初试ASP.NET Web API/MVC API(附Demo)
- 【道德经】漫谈实体、对象、DTO及AutoMapper的使用
- 【AutoMapper官方文档】DTO与Domin Model相互转换(上)
- .NET Core 微服务架构 Steeltoe 使用(基于 Spring Cloud)
- 重新理解:ASP.NET 异步编程
- 升级 Visual Studio 2015 CTP 5 的坑、坑、坑
- EasyUI+MVC+EF简单用户管理Demo(问题及解决)
- 解读发布:.NET Core RC2 and .NET Core SDK Preview 1
- ASP.NET Core 1.0 开发记录
- 快刀斩乱麻之 Katana
- EF7 Code First Only-所引发的一些“臆想”
- EntityFramework DbContext 线程安全
- 你不知道的事-建站始末1【准备篇】
- 精彩 .NET 2015
- Mac OS 终端利器 iTerm2