今天做的是学校刷题网站上字符串模块的题目
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");
}