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

题目:

给定一个字符串,请写一段代码找出这个字符串中首先出现两次的那个字符。 例如字符串为"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  ;
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。