今日小结(12.27)

今天做的是学校刷题网站上字符串模块的题目

jack的字符串

题目描述

阿操最讨厌写字符串的题目,看到眼前密密麻麻的字母就烦。这件事的起因就是很久很久以前的一次找重复字符的位置。 现在有一个字符串,我们要找出其中的重复的字符并输出这些字符和字符的位置,如:aabcaabc22 输出 a,0;a,1;a,4;a,5,b,2;b,6,c,3;c,7;2,8;2,9

输入

输入一行字符串(字符串中只含数字和字母)。其长度不超过100。包括多组输入。

输出

根据样例的格式将重复出现的字符位置输出

样例输入 

aabcaabc22

样例输出 

a:0,a:1,a:4,a:5
b:2,b:6
c:3,c:7 
2:8,2:9

做题思路:读完题目会发现这道题用类似桶排序的方法就能解出,根据字符数组字符的ASCLL码值对应数组的一个位置,在用其判断是否重复出现,若是,则将数组该字符及对应位置输出出来,注意一下输出的格式,这题就解决了。

代码如下:

#include <stdio.h>
#include <string.h>
int main()
{
    int n;
    char s[200];
    int a[200]={0};
    while(gets(s)!=NULL){
    for(int i=0;s[i]!='\0';i++)
        a[s[i]]++;
        for(int i=0;s[i]!='\0';i++){
            if(a[s[i]]>1){
                printf("%c:%d",s[i],i);
                for(int j=i+1;s[j]!='\0';j++)
                if(s[j]==s[i])printf(",%c:%d",s[j],j);
            a[s[i]]=0;
            printf("\n");}
        }}
    }


[USACO 1.1.1]你要乘坐的飞碟在这里

题目描述

一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。 他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,"A" 是 1 和 "Z" 是 26。举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字 mod 47 等于慧星的数字 mod 47,那么你要告诉这个团体准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果搭配打印"GO"否者打印"STAY" 团体的名字和慧星的名字将会是没有空格或标点的一串大写字母(不超过6个字母)

输入

第 1 行: 彗星的名字(一个长度为1到6的字符串) 第 2 行: 团体的名字(一个长度为1到6的字符串)

输出

单独一行包含"STAY"或"GO".

样例输入 复制

COMETQ
HVNGAT

样例输出 复制

GO

做题思路:题目篇幅较长,找出关键部分就行了,题意说的很明显,只需把输入的每个字母所排位置依次相乘,再用结果对结果取模进行比较,便可得出结果。

#include<stdio.h>
#include<string.h>
int main()
{
    int i,t=1,s=1;
    char str1[10],str2[10];
    gets(str1);
    gets(str2);
    for(i=0;str1[i]!='\0';i++)
        t*=(str1[i]-'A'+1);
    for(i=0;str2[i]!='\0';i++)
        s*=(str2[i]-'A'+1);
        if(t%47==s%47)
            printf("GO\n");
        else
            printf("STAY");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值