【面试题】剑指Offer-35-第一个只出现一次的字符

    xiaoxiao2021-04-11  33

    题目概述

    解题思路

    定义一个256个长度的字符数组

    将每一个元素初始化成0

    遍历一遍字符串

    将遇到字符对应ASCII码的对应数组下标位置的元素+1

    遍历完后

    再次重新遍历字符串,将遇到的字符,根据其对应ASCII码的下标来查找从数组的数字

    如果是1,那么这个字符就是第一次出现一次的字符了

    代码实现

    char FindFisrtNum1Char(const char* str) { assert(str); //统计每个字符出现的个数 char hash[256] = {0}; const char* pstr = str; while (*pstr != '\0') { hash[*pstr]++; pstr++; } pstr = str; while (*pstr != '\0') { if (hash[*pstr] == 1) return *pstr; pstr++; } return 0; } void TestFindFisrtNum1Char() { char* str = "abcdacd"; cout << FindFisrtNum1Char(str) << endl; }

    转载请注明原文地址: https://ju.6miu.com/read-666531.html

    最新回复(0)