zoukankan      html  css  js  c++  java
  • 第一个只出现一次的字符 【微软面试100题 第十七题】

    题目要求:

      在一个字符串中找到第一个只出现一次的字符,如输入abaccdeff,则输出b。

      参考资料:剑指offer第35题

    题目分析:

      采用hash表,建立一个256大小的hash空间。需要遍历两次字符串,第一次遍历用来更新hash表,第二次遍历找出第一个只出现一次的字符。

    代码实现:

    #include <iostream>
    
    using namespace std;
    
    char FirstSingle(char *str);
    
    int main(void)
    {
        char *str = "abaccdeff";
        cout << "第一个只出现一次的字符是:" << FirstSingle(str) << endl;
        return 0;
    }
    char FirstSingle(char *str)
    {
        if(str==NULL)
            return '';
        const int size = 256;
        unsigned int hash[size];
    
        for(int i = 0;i<size;i++)
            hash[i] = 0;
    
        char *p = str;
        while(*p != '')
        {
            hash[*p]++;
            p++;
        }
        
        p = str;
        while(*p != '')
        {
            if(hash[*p]==1)
                return *p;
            p++;
        }
        return '';
    }
    View Code
  • 相关阅读:
    docker基本指令
    Process API
    Go的Context用法
    golang的可空类型和零值
    动态编程(DynamicObject、ExpandoObject)
    git clean
    SQL Server Join
    公用表表达式 Common Table Expression
    ubuntu安装mysql
    asp.net core-使用Nlog和log4net
  • 原文地址:https://www.cnblogs.com/tractorman/p/4057588.html
Copyright © 2011-2022 走看看