华为机试—输出包含名字的个数和字符串

题目:

输入一个n,再输入n个字符串,再输入一个名字串,输出包含名字串的个数和字符串。

输入:

10

sfsfjacksdf

jajajack

jack

jjjjjjjjckd

jjjjjjjjjjjack

jackkkkk

jajackkkkkkk

hello

wordjack

jajaccccjack

jack

输出:

8

sfsfjacksdf

jajajack

jack

jjjjjjjjjjjack

jackkkkk

jajackkkkkkk

wordjack

jajaccccjack

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
	vector<string> result;
	string arrayStr[100];
	int i,j,k;
	int count=0;

	string s;
	int n;
	cin>>n;

	for(i=0;i<n;i++)
		cin>>arrayStr[i];

	cin>>s;

	/*
	//方法一
	for(i=0;i<n;i++)
	{
		for(j=0;j<arrayStr[i].length();)
		{
			if(s[0]==arrayStr[i][j])
			{
				for(k=1;k<s.length();)
				{
					if(s[k]!=arrayStr[i][j+1])
					{
						j++;
						break;
					}
					else
					{
						j++;
						k++;
					}
				}
				if(k==s.length())
				{
					count++;
					result.push_back(arrayStr[i]);
				}
			}
			else
				j++;
		}
	}
	*/

	//方法二
	for(i=0;i<n;i++)
	{
		if(arrayStr[i].find(s)!=-1)
		{
			count++;
			result.push_back(arrayStr[i]);
		}
	}

	if(count==0)
		cout<<0<<endl;
	else
	{
		cout<<count<<endl;
		for(i=0;i<result.size();i++)
			cout<<result[i]<<endl;
	}

	return 0;
}

时间: 2024-08-03 20:17:08

华为机试—输出包含名字的个数和字符串的相关文章

【华为机试练习】计算字符个数

题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数.不区分大小写.输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符.输出描述:输出输入字符串中含有该字符的个数. 解法(C语言版): #include<stdio.h> #include<string.h> #include<math.h> int main() { char str[10000]; char ch; int n, i, cn

华为机试—输出大写字母

题目:输出大写字母 输入一个字符串,输出其中的大写字母 输入 2, sdARSFGfg 输出 ARSFG #include <iostream> #include <string> using namespace std; void filter(string str) { int i,len; len=str.length(); for(i=0;i<len;i++) { if(str[i]>=65 && str[i]<=90) printf(&q

华为机试—输出含“23”的数

输入一行数字:123 423 5645 875 186523 在输入第二行:23 将第一行中含有第二行中"23"的数输出并排序 结果即:123 423 186523 /* 先排序,顺序遍历每个数字,看是否含有23 */ #include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b) { return *(int*)a-*(int*)b; } int main(int argc,

华为机试—输出第n个丑数

#include <stdio.h> //判断一个数是否为丑数 bool IsChou(__int64 num) { while(num!=0) { if(num == 1) return 1; else if(num % 2 == 0) num /= 2; else if(num % 3 == 0) num /= 3; else if(num % 5 == 0) num /=5; else return 0; } } int findUglyNumber(int n) { __int64 a

华为机试—输出一个数字各个位数和

两种解法: 1.逐位相加 #include <iostream> #include <string> using namespace std; int main() { int s; cin>>s; int sum=0; while (s!=0) { sum=sum+s%10; s=s/10; } cout<<sum; return 0; } 2.转换成字符串相加 #include <iostream> #include <string&g

[华为机试]输入数字的汉语拼音,每个拼音的首字母大写。输出该数字的阿拉伯数字。

//输入数字的汉语拼音,每个拼音的首字母大写.输出该数字的阿拉伯数字. //JiuBaiJiuShiJiu -> 999 #include<stdio.h> #include<string.h> int result = 0; void add(int n,char wei[]) { if(strcmp(wei,"Wan") == 0) result = result + n * 10000; else if(strcmp(wei,"Qian&q

华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

1 package 华为机试; 2 //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin 3 //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin. 4 5 //这句话的核心就是在字符串删除一些字符,感觉处理很复杂,删除哪些字符呢?我们观察发现, 本字符串中删除了一个3,一个a,一个p,满足的规则是啥呢? 333中删除最后一个3,3aa删除了一个a,5pp中删除一个p, 6 //规

2014华为机试西安地区B组试题

2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号码凡是1的倍数的电灯的开关拉一下:接着第二个学生把号码凡是2的倍数的电灯的开关拉一下:接着第三个学生把号码凡是3的倍数的电灯的开关拉一下:如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下.n个学生按此规定走完后,长廊里电灯有几盏亮着. 注:电灯数和学生

华为机试(3)

简单题   题目描述   输入一个数字,将其倒序输出,并输出其各个位上的乘积   输入描述  : 一个正整数,保证在int范围内   输出描述  : 两个数字,用空格隔开,第一个数字为其倒序的值,第二个数字是各个位上的乘积  输入样例  :134   输出样例  :431 12  解题思路:删繁就简,直接当字符串读入,处理就简单多了.  PS:此处不用纠结于题意,没有特别强调是按照一个数的格式输出,因此可以有前导0 void main() { int d; cin>>d; ostringstr