当前位置: 首页 > news >正文

[PHP] 算法-字符串的左循环的PHP实现

汇编语言中有一种移位指令叫做循环左移(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);

 

转载于:https://www.cnblogs.com/taoshihan/p/9857320.html

相关文章:

  • asp.net mvc中action接收客户端发送过来的html片段
  • flask高阶
  • 原型继承
  • 入门级的git使用指北
  • 【视频】ASP.NET Core MVC 2.* 入门
  • 一个简单高性能的Go router,和httprouter 差不多快,且支持正则
  • centos 7更改网卡名字
  • 初识btrace
  • OSChina 周四乱弹 —— 但愿那个嘴上说着拒绝的人,其实心里最爱的是你。
  • Go基础系列:接口类型断言和type-switch
  • PHP多进程
  • SpringMVC基础知识
  • MPAndroidChart 教程:Y轴 YAxis
  • 大快搜索数据爬虫技术实例安装教学篇
  • js递归,无限分级树形折叠菜单
  • CentOS 7 防火墙操作
  • exif信息对照
  • Java-详解HashMap
  • js中的正则表达式入门
  • JS专题之继承
  • Laravel 菜鸟晋级之路
  • October CMS - 快速入门 9 Images And Galleries
  • TypeScript实现数据结构(一)栈,队列,链表
  • 初识 beanstalkd
  • 电商搜索引擎的架构设计和性能优化
  • 关于extract.autodesk.io的一些说明
  • 如何进阶一名有竞争力的程序员?
  • 如何在GitHub上创建个人博客
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 消息队列系列二(IOT中消息队列的应用)
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • (1)Android开发优化---------UI优化
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (蓝桥杯每日一题)love
  • (一)appium-desktop定位元素原理
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NetCore 如何动态路由
  • .NET基础篇——反射的奥妙
  • .net专家(张羿专栏)
  • /run/containerd/containerd.sock connect: connection refused
  • @RestControllerAdvice异常统一处理类失效原因
  • [ IO.File ] FileSystemWatcher
  • [100天算法】-实现 strStr()(day 52)
  • [Android Pro] Notification的使用
  • [Angularjs]ng-select和ng-options
  • [Apio2012]dispatching 左偏树