小壮的习惯
时间: 1ms 内存:128M
描述:
小壮是一个英语初学者,一天,逗比的小壮看英语书,被其中的句子吸引了。他有个习惯,他每次读完一句话都要把这句话抄下来并且记录某些字母、单词或者空格的个数,请你帮他解决这个问题吧。
输入:
输入一句英文和想要查找的单词、句子或者空格
输出:
输出小壮写下的字母(顺序输出)以及他想要查找的字母、单词、空格的个数
示例输入:
i am a boy
a
示例输出:
iamaboy
2
提示:
参考答案(内存最优[1092]):
#include<stdio.h>
#include<string.h>
int main()
{
char a[999],b[99];
int i,t,j;
int x=0;
gets(a);
gets(b);
t=strlen(a);
for(i=0;i<t;i++)
if(a[i]!=' ')printf("%c",a[i]);
if(strlen(b)<=1)
{
for(i=0;i<t;i++)
if(a[i]==b[0])x++;
}
else
{
for(i=0;i<t;i++)
{
if(a[i]==b[0])
{
for(j=1;j<strlen(b);j++)
{
if(a[i+j]!=b[j])break;
if(j!=strlen(b)-1)continue;
else if(j==strlen(b)-1&&a[i+j]==b[j])
x++;
}
}
}
}
printf("\n%d",x);
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;//原字符串
string _substr;//子字符串
int cnt=0; //记录字符串次数
//接收输入字符串
getline(cin,str);
fflush(stdin);
getline(cin,_substr);
//计算字符串
int index=0;
for ( ; index!=str.size(); ++index)
{
int begin=0;
if (str[index] == _substr[begin])
{
for (begin=1; begin!=_substr.size(); ++begin)
{
if (str[begin+index] != _substr[begin])
{
break;
}
}
if (begin == _substr.size())
{
++cnt;
index+=_substr.size()-1;
}
}
}
//输出string中的字母
int i=0;
for ( ; i!=str.size(); i++)
{
if (isalpha(str[i]))//判断字母
{
cout<<str[i];
}
}
cout<<endl;
//输出是否有子字符串
if (cnt == 0)
{
cout<<"no substring."<<endl;
}
else
{
cout<<cnt<<endl;
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。