华为机试题目---字符串替换

题目要求:输入一个字符串,然后在输入一个整数,就是替换字符串的次数,然后依次输入需要替换的字符串……

例如:

输入:abcdefg

3

a->qwe

b->s

fg->abc

输出:qwescdeabc

//字符串替换
#include<iostream>
#include<vector>
#include<string>
#define max 100
using namespace std;

void change(char str[],int count,int len_str,string buff,int jilu,int count_re_str)
{
	int j=0;
	int p=0;

	char q[max];

	for(int i=0;i<len_str;i++)
	{
		q[i]=str[i];//防止后面str改变影响元数组
	}

	for(int i=jilu+count;i<len_str;i++)
	{
		str[jilu+count_re_str+p++]=q[i];
	}
	for(int i=jilu;i<jilu+count_re_str;i++)
	{
		str[i]=buff[j++];
	}
	str[jilu+count_re_str+p]='\0';
}

void replace_str(char str[],int len_str,vector<string> restr,int index)
{
	bool flag=true;
	bool anquan=true;
	string s_str;
	string buff;
	s_str=restr[index];
	int jilu;
	int count=0;
	int count_re_str=0;
	int n=s_str.size();
	for(int i=0;i<n;i++)
	{
		if(s_str[i]>='a'&&s_str[i]<='z'&&anquan)
		{
			for(int j=0;j<len_str&&flag;j++)
			{
				if(s_str[i]==str[j])
				{
					flag=false;
					jilu=j;
				}
			}
			count++;
		}
		else
		{
			if(anquan)
			{
				i=i+2;
				anquan=false;
			}
		    if(s_str[i]>='a'&&s_str[i]<='z')
		    {
			   buff.push_back(s_str[i]);
			   count_re_str++;
		    }
		}
	}
	change(str,count,len_str,buff,jilu,count_re_str);
}

int main()
{
	char str[max];
	vector<string> restr;

	string s;
	gets(str);

	int sum;

	cout<<"请输入次数:";
	cin>>sum;

	for(int i=0;i<sum;i++)
	{
		cin>>s;
		restr.push_back(s);
	}

	for(int i=0;i<sum;i++)
	{
		int len_str=strlen(str);
        replace_str(str,len_str,restr,i);
	}

	int q=0;
	while(str[q]!='\0')
	{
		cout<<str[q++];
	}
	cout<<endl;

	system("pause");
	return 0;
}

时间: 2024-11-07 22:46:18

华为机试题目---字符串替换的相关文章

华为机试题目_(转载总结)

原作者地址:http://blog.csdn.net/xcbeyond/article/details/45627247 题目二 2.程序实现目标:求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数. 程序要求:输入:整型数组中的元素个数及各个元素. 输出:整型数组中元素的平均值,大于和小于此平均值的元素的个数. /* * 一点总结: * 1.Java中没有指针,那么如何定义全局变量,还是只要public就可以共享了呢,试下去掉static可不可以:错误:无法在静态方法中引用

华为机试-计算字符串的相似度

题目描述 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把"a"替换为"b". 2 增加一个字符,如把"abdd"变为"aebdd". 3 删除一个字符,如把"travelling"变为"traveling". 比如,对于"abcdefg"和"abcdef&qu

华为机试:字符串分隔

题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 示例1 输入 abc 123456789 输出 abc00000 12345678 90000000 Java: 1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public cl

2016校招华为机试题目回忆1

题目一:根据指定的分隔符分隔字符串,并输出指定的段 描述 根据指定的分隔符分隔字符串,并输出指定的段.如果指定的段超过分隔的段数,输出:NULL 举例: AAA?BBB?CCC??2 字符串为:AAA?BBB?CCC? 分隔符为:? 指定的段为:2 字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB 输入输出格式要求 输入分隔字符串长度小于128个字符,指定的段是一个正整数. 样例 输入:AAA?BBB?CCC??2 输出:BBB 题目二:输入若干整数,输出其中能被这些整数中其他

华为机试—约瑟夫环替换计数器m(数组解决)

题目描述: 输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m.从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止.如果计数到达数列尾段,则返回数列首位置继续计数.请编程实现上述计数过程,同时输出数值出列的顺序 比如: 输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置) 第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4

华为机试—约瑟夫环替换计数器m(循环链表解决)

题目描述: 输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m.从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止.如果计数到达数列尾段,则返回数列首位置继续计数.请编程实现上述计数过程,同时输出数值出列的顺序 比如: 输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置) 第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4

2015华为机试——将字符串中不同字符的个数打印出来

描述: 找出字符串中,不同的字符的个数. 题目类别: 字符串 难度: 初级 运行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 输入一个字符串,'\0'作为字符串结束符. 输出: 输出字符串中不同字符的个数. 样例输入: 122345 样例输出: 5 代码如下: public class dayin_Char { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while

华为机试—给定字符串中找出单词

题目: 在给定字符串中找出单词("单词"由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格.问号.数字等等:另外单个字母不算单词):找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中:如果某个单词重复出现多次,则只输出一次:如果整个输入的字符串中没有找到单词,请输出空串.输出的单词之间使用一个"空格"隔开,最后一个单词后不加空格. 要求实现函数: void my_word(charinput[

2016校招华为机试题目回忆

题目一:字符串格式化输出 AAABBBBCC–>A3B4C2 将字符串按照字符+连续重复数格式化输出 题目二:好友推荐 有n个人,每个人都有各自的好友列表.给定一个阈值p,当A和B的共同好友数超过p则推荐A和B为好友.请实现自动推荐直到没有好友可以推荐(每次推荐默认同意,即一定成为好友),然后进行一些查询. 查询1:A的好友数有几个?如果A不在这n个里面,输出-1,否则输出好友数: 查询2:A和B是好友吗?如果是则输出0,否则输出-1. 输入:p n m x y p为阈值,n为人数,m为初始时的