面试题35:第一个只出现一次的字符

题目:在字符串中找出第一个只出现一次的字符。如果输入“abaccdeff”,则输出'b'

解题思路:哈希。num[ch]记录字符ch出现的次数。

#include<iostream>

using namespace std;

int main()
{
    int num['z'+1];
    string s;   

    cin>>s;    
    memset(num,0,sizeof(num));
    for(int i=0;s[i]!='';i++)
        num[s[i]]++;
    
    for(int i=0;s[i]!='';i++)
    {
        if(num[s[i]]==1)
        {
            cout<<s[i]<<endl;
            break;           
        }        
    }    
    
    system("pause");
    return 0;
}
View Code

小变形:定义一个函数,输入两个字符串,从第一个字符串中删除在第二个字符串出现过的所有字符。

解题思路:第一反应是将2个字符串排序(需要记录原来的位置),然后逐个删除。时间复杂度为O(nlogn)

哈希:思路同上,int apr[ch]用来记录第二个字符串中字符ch出现次数。时间复杂度O(n)

原文地址:https://www.cnblogs.com/icfnight/p/3294589.html