第一个只出现一次的字符
题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
代码
<?php
namespace app\index\controller;
class Test
{
// 测试
public function test()
{
$str = "ajdfjdoisfasdn";
$this->FirstNotRepeatingChar($str);
}
function FirstNotRepeatingChar($str)
{
if (empty($str)) return -1;
$arr = str_split($str, 1); // 将字符串转成字符数组
$count = array_count_values($arr); // 计算字符出现的次数
foreach ($count as $item => $i) {
if ($i == 1) return strpos($str, $item); // 找到出现一次的,返回在原字符串的位置
}
return -1; // 找不到
}
}
笔记
array_count_values($array):统计数组中所有的值
strpos($haystack, $needle):返回 needle 在 haystack 中首次出现的数字位置。