我在Codewars.com参加培训测试,
说明是:
我已经制作了这样的PHP脚本
<?php
function alphabet_position($string)
{
$lower = strtolower($string);
$alphabet = range("a", "z");
$result = "";
for ($i=0; $i<strlen($lower); $i++)
{
$filter = array_search($lower[$i], $alphabet);
if ($filter)
{
$result .= $filter+1 ." ";
}
}
return $result;
}
echo alphabet_position('The sunset sets at twelve o\'clock');
//output 20 8 5 19 21 14 19 5 20 19 5 20 19 20 20 23 5 12 22 5 15 3 12 15 3 11
但当我提交我的答案时,它包含的错误就像
Time: 937msPassed: 0Failed: 1Exit Code: 1
Test Results:
Log
PHPUnit 9.1.1 by Sebastian Bergmann and contributors.
AlphabetPositionTest
testFixed
Failed asserting that two strings are equal.
Expected: '20 8 5 19 21 14 19 5 20 19 5 20 19 1 20 20 23 5 12 22 5 15 3 12 15 3 11'
Actual : ''
Completed in 23.3161ms
请谁能帮忙修一下?告诉我为什么它显示错误的细节?
只是一个替代方案,它不再需要搜索“字母表”来检查字符。使用ord()
给出字符的ascii值,这是一个简单的翻译。然后用A
的值抵消它,使字符...
function alphabet_position($string)
{
$lower = strtolower($string);
$result = "";
for ($i=0; $i<strlen($lower); $i++)
{
if ( $lower[$i] >= 'a' && $lower[$i] <= 'z' ) {
$result .= (ord($lower[$i]) - ord('a'))+1 ." ";
}
}
return $result;
}
如果一个字符是a
,array_search()
将返回0
,If($filter)
将忽略它,就好像(0)是false一样。因此,您可以使用严格的类型检查来避免这个问题。
<?php
function alphabet_position($string) {
$lower = strtolower($string);
$alphabet = range("a", "z");
$result = "";
for ($i=0; $i < strlen($lower); $i++)
{
$filter = array_search($lower[$i], $alphabet);
if ($filter !== false){ // always have strict type check as array index can also be 0
$result .= $filter + 1 ." ";
}
}
return $result;
}
本文向大家介绍js中怎么判断两个字符串相等的实例,包括了js中怎么判断两个字符串相等的实例的使用技巧和注意事项,需要的朋友参考一下 在javascript判断两个变量值是否相等,可以使用 ==(等同)操作符 或者 ===(恒等)操作符 == 操作符 “等同”操作符,简单判断2个变量值是否相等,变量类型不一致时,会做类型转换,即忽略变量的类型进行比较 例子1 var str1 = "123456"
本文向大家介绍在C语言中比较两个字符串是否相等的方法,包括了在C语言中比较两个字符串是否相等的方法的使用技巧和注意事项,需要的朋友参考一下 C语言strcmp()函数:比较字符串(区分大小写) 头文件:#include <string.h> strcmp() 用来比较字符串(区分大小写),其原型为: 【参数】s1, s2 为需要比较的两个字符串。 字符串大小的比较是以ASCII 码表上的顺序来决定
本文向大家介绍PHP判断一个字符串是否是回文字符串的方法,包括了PHP判断一个字符串是否是回文字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP判断一个字符串是否是回文字符串的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。
问题内容: 为什么以下语句返回? 我也尝试过在字符串周围使用单引号。我唯一可以评估的方法是使用运算符,而不是 我的猜测是PHP将它视为某种方程式,但似乎有些奇怪。 有人可以详细说明吗? 问题答案: 是float数字格式,因此它们在比较时将转换为数字。 并且都将是因为它们太小。 对于在php中, 如果将数字与字符串进行比较,或者比较涉及 数字字符串 ,则每个字符串将转换为 数字 ,然后以数字方式进行
本文向大家介绍PHP判断字符串长度的两种方法很实用,包括了PHP判断字符串长度的两种方法很实用的使用技巧和注意事项,需要的朋友参考一下 php程序中字符串长度判断,可以使用strlen。 方法一: 方法二: 以上两种方法,第二种效率更高些。 在PHP中,所有的变量都是用一个结构-zval来保存的,strlen虽然是直接获取其中的len,但是仍然有一次函数调用,而isset是PHP的语法结构,所以更
我一直在试图解决这个面试问题,它要求洗牌字符串,以便没有两个相邻的字母是相同的,例如, ABCC->ACBC 我想到的方法是 1)遍历输入字符串并将(字母、频率)对存储在某个集合中 2)现在通过拉取频率最高(即>0)的字母来构建一个结果字符串 3)每当我们拉一封信时,更新(减少)频率 4)如果所有字母的频率为零,则返回结果字符串 5)如果只剩下一个频率大于1的字母,则返回错误 我假设是Unicod