1. 题目
统计字符
给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符。
输入
qywyery23tdd
输出
y
2. 分析
和所有统计英文字符一样,依次利用Hash算法将字符串字符映射到256维字符数组中,每一维存储对应字符的个数。当最先达到3次的字符,并且是英文字母的字符输出。
3. C++程序
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int nArrChar[256] = {0};//对应ASCII码
getline(cin,str);
for(int i=0;i<str.length();i++)
{
if(++nArrChar[str[i]] == 3)//对应的码位+1
{
if( str[i]>='a' &&str[i]<='z' || str[i]>='A' && str[i]<='Z') //确定是英文字母则输出
{
cout<<str[i]<<endl;
break;
}
}
}
return 0;
}
4. Java程序
package CountChar;
import java.util.Scanner;
public class CountChar {
public static void main(String[] args) {
String str;
int nArr[] = new int[256];
Scanner scan = new Scanner(System.in);
str = scan.nextLine();
for(int i=0;i<str.length();i++)
{
if(++nArr[str.charAt(i)] == 3)
{
char c =str.charAt(i);
if(c>='a'&& c<='z' || c>='A'&&c<='Z')
{
System.out.println(c);
break;
}
}
}
scan.close();
}
}
个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!