PHP判断字符串x与o数量相等的代码返回true原理疑问
原理说明
substr_count是PHP内置的字符串统计函数,当统计的目标子串在待搜索字符串中完全不存在时,该函数会直接返回整数0,而非空、false等其他值。
他人给出的精简代码运行逻辑完全符合题目要求的核心原因如下:
- 当输入字符串不含x也不含o(比如输入
zzz)时,substr_count(strtolower($s),'o')返回0,substr_count(strtolower($s),'x')也返回0,0 == 0的判断结果就是布尔值true,刚好匹配题目要求的「无x和o时返回true」的规则 - 当字符串只含x或只含o时,其中一个统计值为大于0的整数,另一个为0,判断结果为
false - 当字符串同时含x和o时,直接比较两者的统计值是否相等,和题目要求完全匹配
两段代码的等价性
你的代码和他人的精简代码逻辑完全等价,只是写法不同:
- 你的代码额外做了「是否存在x或o」的前置判断,当不存在时直接返回true,存在时再比较计数
- 他人的代码利用了
substr_count无匹配返回0的特性,省略了前置判断,直接比较两个计数的结果:当两个计数都是0时自然相等,等效于你代码中「无x和o返回true」的分支逻辑
内容的提问来源于stack exchange,提问作者BigJonna
相关产品推荐
相关产品推荐

