PAT1029 旧键盘(最后一个测试点答案错误,待更正)

时间:2020-03-03 18:28:50   收藏:0   阅读:281

题目:旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。

思路:遍历输入的字符串,通过find()算法确定在实际的输出中是否有对应的字符,若没有则记录

代码:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
	vector<string>s1(2);
	string temp;
	for (auto it = s1.begin(); it != s1.end(); ++it)
	{
		cin >> temp;
		*(it) = temp;//输入,*(it)是vector迭代器的解引用
	}
	if (s1[0].empty() || s1[1].empty()||s1[0].length()>80||s1[1].length()>80||s1[0].length()<s1[1].length())
	{
		return 0;
	}
	int size = s1[0].length();
	for (auto it = s1.begin(); it != s1.end(); it++)
	{//对字符串进行大写转换
		for (auto mi = (*it).begin(); mi != (*it).end(); mi++)
		{
			(*mi)=toupper((*mi));
		}
	}
	string index(size, ‘0‘);//保存结果
	int step = 0;
	for (auto it = s1[0].begin(); it != s1[0].end(); ++it)
	{
		char ch = *it;
		if (index.find(ch)==string::npos)//在index数组中寻找是否记录过该字符
		{
			if (s1[1].find(ch) == string::npos)//在实际的输出中寻找是否有字符ch
			{//判断条件表示没有字符ch时,保存ch至index中
				index[step] = ch;
				step++;
			}
		}
	}
	for (int i = 0; i <step; i++)
	{
		cout << index[i];
	}
	return 0;
}

 

原文:https://www.cnblogs.com/zongji/p/12403803.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!