(字符串)字符串中首先出现两次的字符

题目:

给定一个字符串,请写一段代码找出这个字符串中首先出现两次的那个字符。 例如字符串为"qywyer23tdd",输出为y。

思路:

1、从头到尾遍历字符串str,如果str[i]为首先出现两次的字符,则满足的条件是str[i]==str[j](0<=j<i);

2、遍历字符串时,通过类似hash数组来统计字符出现的次数,由于char字符有256个,为0-255,所以需创建一个256大小的数组,即int A[256].

代码:

char firstCharAppearTwice_1(string str){
    for(unsigned int i=0;i<str.length();i++){
        for(unsigned int j=0;j<i;j++){
            if(str[i]==str[j])
                return str[i];
        }
    }
    return ' ';
}
char firstCharAppearTwice_2(string str){
    int hashTable[256];
    for(int i=0;i<256;i++)
        hashTable[i]=0;

    for(unsigned int i=0;i<str.length();i++){
        hashTable[str[i]-'0']++;
        if(hashTable[str[i]-'0']==2)
            return str[i];
    }

    return ' ';
}
原文地址:https://www.cnblogs.com/AndyJee/p/4462758.html