需要编写一个代码块来检查一个字符串是否是另一个字符串的旋转。
看了这里的大量帖子,都是用 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(使用前将#替换为@)