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