PHP - 检查一个字符串是否是另一个字符串的旋转

2024-01-06

需要编写一个代码块来检查一个字符串是否是另一个字符串的旋转。

看了这里的大量帖子,都是用 Java 或 C++ 写的,但我需要用 PHP 来做。

我尝试了一些不同的方法,尝试使用 C++ 和 Java 示例,但我没有任何运气,这是我当前的代码:

<?php

function isSubstring($s1, $s2) {


    if(strlen($s1) != strlen($s2)) {
        return false;
    }

    if(WHAT TO PUT HERE) {
        echo "it is!";
    } else {
        echo "nope";
    }
}


isSubstring("hello", "helol");

?>

可用的方法很多。这里还有一个使用内置函数的方法count_chars http://php.net/manual/en/function.count-chars.php对两个字符串进行比较,然后比较两个结果数组:

function isSubstring($s1, $s2) {
    if (strlen($s1) != strlen($s2)) {
        echo "nope";
        return;
    }

    $s1cnt = count_chars($s1, 1);
    $s2cnt = count_chars($s2, 1);

    if($s1cnt === $s2cnt) {
        echo "it is!";
    } else {
        echo "nope";
    }
}

Edit:正如 MonkeyZeus 指出的那样,请注意与多字节字符的比较。它可能会咬一点:

isSubstring('crढap', 'paࢤrc');

会给true作为答案。 ढ 是 UTF-8 印度梵文三字节字符:E0 A2 A4ࢤ 也是三字节字符(阿拉伯语):E0 A4 A2,并且 count_chars 函数对各个字节进行计数。因此,如果字符仅来自一种语言,那么使用是安全的,否则就吃一些头痛药......

在我看来,要管理这类事情,我们需要有由 3 个字节组成的字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - 检查一个字符串是否是另一个字符串的旋转 的相关文章

随机推荐

  • PHP中的矩阵乘法

    尽管矩阵的顺序应该没问题 但以下代码会抛出异常 这可能是一件我无法注意到的小事 但无法弄清楚
  • Python通过鼠标点击找到最近的乌龟

    我正在使用基于海龟的网格设置创建扫雷风格的游戏 我需要找到网格内最近的单元格并显示位于其下方的图标 无论是炸弹还是数字图标 我不想做到精确 我只需要单击鼠标即可找到网格中最近的单元格 即使单击不是直接在板上 目前 我的代码仅显示板上创建的最
  • 如何读取 Bash 中的任意一个键?

    我可以得到read n 1 KEY获取大多数键 但由多个字符表示的键除外 例如 如果我按向上箭头键 read n 1 echo A A As you can see read only takes the Esc and the A is
  • 使用 Python 加载 CloudFormation YAML

    我有一套YAML我最近转换的 AWS Cloudformation 模板JSON 使用时JSON我能够加载这些模板并使用它们进行转换jinja从中生成一些 Markdown 文档 我正在尝试做同样的事情YAML在Python中 我在 clo
  • 带回调的forceUpdate() 与 this.setState()

    原因是在处理时state具有自己功能的变量 我能想到的有两种方法 一是变异this state直接 嗯 有点 我知道这是不鼓励的 通过调用状态函数 然后调用forceUpdate 并处理由此带来的后果 另外就是做回调函数 哪个是正确的方法
  • Android:从顶部开始圆形进度条(270°)

    我使用以下可绘制对象定义了一个圆形进度条 ciruclar progress bar xml
  • 符合标准的方式来定义我的枚举

    在没有明确正确确定枚举范围的情况下 如何摆脱警告 符合标准的代码将与foo bar mUpload see here https stackoverflow com questions 514194 using enum inside ty
  • 值得学习使用 MSBuild 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我只是想知道人们是否认为值得学习使用 MSBuild 语法来自定义 net 项目的构建过程 或者考虑到使用 Visual Studio 构建项目
  • 对 javascript 中的“this”关键字感到困惑

    我已经很长时间没有使用 Javascript 了 今天又重新学习了它 一直让我着迷的一件事是this关键词 我知道在 jQuery 事件处理程序中 例如单击事件 this指的是触发事件的元素 怎么this传递给我作为回调提供的函数 即使我的
  • 在 bash 调试运行期间隐藏信息

    我们在 shell 脚本中进行 debug run bash x my script sh 来了解 显示它正在做什么 但这样做可能会显示一些我不想看到的敏感信息 例如密码 我的脚本从安全保管库中提取密码 并在需要时将其作为脚本中的变量传递
  • 当用户在 scanf() 中输入错误的数据类型时如何修复无限循环?

    C初学者在这里 对于下面的程序 每当用户输入字符或字符串时 它就会进入无限循环 在仍然使用 scanf 的情况下如何解决这个问题 与使用 scanf 相比 编写该程序的更好方法是什么 感谢那些愿意回答的人 include
  • 在 MATLAB 中将频谱图保存为图像

    我正在使用以下方法分析一些声音片段spectrogram 函数于MATLAB 我想将频谱图保存为图像 jpg png 等 但无论我以什么图像格式保存图形 生成的图像总是与我在图中看到的不同 参差不齐 这是频谱图的示例 Matlab图 htt
  • 为什么我的基本 PyGame 模块这么慢?

    我计划在 Pygame 中编写代码 但我刚刚开始学习基础知识 发现执行代码非常慢 当我按下一个键时 它需要一段时间才能在终端中打印它 似乎没有任何模式 我正在运行Python 2 6 遇到这个问题后我降级了 通过进一步的测试我发现整个系统变
  • ProtoIninclude 添加了不需要的依赖项

    我刚刚在分布式缓存应用程序中用协议缓冲区替换了 NET 序列化 结果确实令人印象深刻 我唯一不喜欢的是 我需要在基本消息类及其子类之间添加依赖关系 这会创建循环依赖关系 除了用 ProtoInclude 标记基类之外 还有其他选择吗 In
  • C# 将文本文件分割成二维字符串数组

    我有一个如下所示的文本文件 John Gauthier blue May Henry Ford Red June James Bond Orange December 我想将它分成一个二维字符串数组 这样我就可以将每一行和每个单词分开 前任
  • 缓存失效——有通用的解决方案吗?

    计算机科学中只有两个难题 缓存失效和命名 菲尔 卡尔顿 是否有通用的解决方案或方法来使缓存失效 知道条目何时过时 以便保证您始终获得最新数据 例如 考虑一个函数getData 从文件中获取数据 它根据文件的上次修改时间对其进行缓存 每次调用
  • Rails、设计身份验证、CSRF 问题

    我正在使用 Rails 制作一个单页应用程序 登录和注销时 使用 ajax 调用 Devise 控制器 我遇到的问题是 当我 1 登录 2 注销然后再次登录时不起作用 我认为这与 CSRF 令牌有关 当我注销时 该令牌会被重置 尽管它不应该
  • symfony2 - 获取执行时间

    我想使用 symfony2 为我的应用程序制作一个状态页 我想在其中打印特定请求的执行时间 以及其他数据 无论如何我找不到这样做 我知道我可以通过以下方式跟踪代码部分的执行时间 starttime microtime do somethin
  • Mysql 带游标的存储过程

    Mysql游标问题 我编写了一个存储过程 它将从一个表中获取旅行记录并将其插入到 2 3 个不同的表中 使用插入语句 问题是我正在检查 table1 中是否不存在记录 然后我将记录从 temptable 顺序插入到 table1 table
  • PHP - 检查一个字符串是否是另一个字符串的旋转

    需要编写一个代码块来检查一个字符串是否是另一个字符串的旋转 看了这里的大量帖子 都是用 Java 或 C 写的 但我需要用 PHP 来做 我尝试了一些不同的方法 尝试使用 C 和 Java 示例 但我没有任何运气 这是我当前的代码