北理2020推免机试第一题

完全没准备北理机试结果翻车了[暴风哭泣.jpg],虽然最后还是拿到了计算机专硕offer,但是贼不甘心,把机试第一题重新打一遍,一百分钟没做粗来的再做只花了二十分钟不到。。。[难受.jpg]

总的来说题目都挺简单的,出思路也蛮快,就是我完全没花时间练。。。

------------------------------------------------------------------------------------------------------------------------

题目:求一串字符串(全大写)中重复次数大于等于3的字符

输入:XXXYY

输出:X3

--------------------------------------------------------------------------------------------------------------------------

上代码:

#include <iostream>
#include <cstring>
using namespace std;

int main(int argc, char** argv) {
    string a;
    char se[26];     //用来存放重复3次及以上次数的字符,按照字母表顺序排放,便于有序输出
    int len,rep[26],flag[50],i,j,n;
    for(i=0;i<26;i++){
        rep[i]=0;   //重复次数 
    }
    while(true){
        cin>>a;
        len = a.length();
        for(i=0;i<26;i++){
            rep[i]=0;   //rep存放重复次数 
        }
        for(i=0;i<len;i++){ 
            flag[i]=0;   //作为比较的“许可证”,防止重复比较字符导致计数重复
        }
        for(i=0;i<len;i++){
            for(j=0;j<len;j++){
                if((flag[i]==0)&&(a[i]==a[j])){
                    n= a[i]-'A'-1;
//                    printf("n: %d\n",n);    //用来调试的
                    rep[n]++;
//                    printf("REP: %d\n",rep[n]);   //用来调试的
                    se[n] = a[i];
                    flag[j]=1;
                    flag[i]=1;
                }
            }
        }
        for(i=0;i<26;i++){
            if(rep[i]>2){
                printf("%c%d",se[i],rep[i]);                    
            }
        }
        printf("\n");
    }
    return 0;
}

 

 

【2020.3更新】

最近刷题比较频繁,有点感觉了,然后又回头拿这道题做练手,这次用的方法比较简单,本来还想试试无序map,但是发现编辑器版本和库的问题一直在报错所以弃疗。上代码,方法简单粗暴:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

int main(int argc, char** argv) {
	string s;
	int seq;
	int charmap[26];
	cin>>s;
	for(int i=0;i<26;i++){
		charmap[i]=0;
	}
	for(int i=0;i<s.length();i++){
		seq = s[i]-'A';
//		printf("seq: %d\n",seq);
		charmap[seq]++;
	}
	for(int j=0;j<26;j++){
		if(charmap[j]>3||charmap[j]==3){
			printf("%c%d",(char)(j+'A'),charmap[j]);
		}
	}
	return 0;
}

差点忘记补充一点,这次代码里用的输入用的是cin,在写的时候我开始用的是scanf,但是发现莫名其妙一直都出不来结果,虽然也不知道为什么,总之这一次遇到的坑让我觉得cin和cout还真香!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值