列表

详情


QR12. 统计字符

描述

给定一个字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符(需要区分大小写)。

数据范围:字符串长度满足

输入描述

输入数据一个字符串,包括字母,数字,字符等。

输出描述

输出首先出现三次的那个英文字符

示例1

输入:

Have you ever gone shopping and

输出:

e

示例2

输入:

nowcoder@mail.com

输出:

o

原站题解

Pascal 解法, 执行用时: 1ms, 内存消耗: 352KB, 提交时间: 2018-10-20

var a:array[-200..200]of longint;
    i,j,k,num:longint;
    s:ansistring;
begin
  readln(s);
  for i:=1 to length(s) do
    begin
     j:=ord(s[i]);
      if((j>=65)and(j<=90))or((j>=97)and(j<=122))then
        inc(a[ord(s[i])-ord('A')]);
      if a[ord(s[i])-ord('A')]>=3 then
        begin
          write(s[i]);
          halt;
        end;
    end;
end.

C 解法, 执行用时: 1ms, 内存消耗: 352KB, 提交时间: 2018-09-12

#include<stdio.h>
#include<string.h>
int main()
{
int a[1000],i,j;
char s[1000];
while(gets(s))
    {
memset(a,0,sizeof(a));
for(i=0;s[i]!='\0';i++)
if((s[i]>='0'&&s[i]<='9'||(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'))&&++a[s[i]]==3)
    {printf("%c",s[i]);break;}
  
}
}

C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2018-09-06

#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000];
	gets(a);
	int* p = malloc(52*sizeof(int));
	memset(p, 0, 52 * sizeof(int));
	for (int i = 0; a[i]!='\0'; i++)
	{
		if (a[i] >= 65 && a[i] <= 90)
		{
			p[a[i] - 65]++;
            if (p[a[i] - 65] == 3)
			{
				printf("%c", a[i]);
				break;
			}
		}
		else if (a[i] >= 97 && a[i] <= 122)
		{
			p[a[i] - 97 + 26]++;
            if (p[a[i] - 97 + 26] == 3)
			{
				printf("%c", a[i]);
				break;
			}
		}
	}
	free(p);
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-11-16

#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
#define MAX 255
char solve(char *pstr)
{  int count[MAX];
   for (int i=0;i<MAX;i++) count[i]=0;
   for (int i=0;pstr[i]!='\0';i++)
   {  if ((pstr[i]>='a' && pstr[i]<='z') || 
            (pstr[i]>='A' && pstr[i]<='Z'))
      {  count[pstr[i]]++;
         if (count[pstr[i]]==3) return pstr[i];
      }
   }
   return 0;
}
int main()
{  char str[MAXLEN];
   gets(str);
   printf("%c",solve(str));
   return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2018-08-07

#include<stdio.h>
#include<string.h>
main()
{
int a[1000],i,j;
char s[1000];
while(gets(s))
    {
memset(a,0,sizeof(a));
for(i=0;s[i]!='\0';i++)
if((s[i]>='0'&&s[i]<='9'||(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z'))&&++a[s[i]]==3)
    {printf("%c",s[i]);break;}
 
}
}

上一题