第一个只出现一次的字符

未匹配的标注

题目描述

在一个字符串(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 中首次出现的数字位置。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~