【题目85:五键键盘】

/**

public class Main104 {
/*
有一个特殊的五键键盘
上面有A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A
A键在屏幕上输出一个字母A
Ctrl-C将当前所选的字母复制到剪贴板
Ctrl-X将当前选择的字母复制到剪贴板并清空所选择的字母
Ctrl-V将当前剪贴板的字母输出到屏幕
Ctrl-A选择当前屏幕中所有字母
注意:
1. 剪贴板初始为空
2. 新的内容复制到剪贴板会覆盖原有内容
3. 当屏幕中没有字母时,Ctrl-A无效
4. 当没有选择字母时Ctrl-C、Ctrl-X无效
5. 当有字母被选择时A和Ctrl-V这两个输出功能的键,
会先清空所选的字母再进行输出

给定一系列键盘输入,
输出最终屏幕上字母的数量

输入描述:
   输入为一行
   为简化解析用数字12345分别代替A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A的输入
   数字用空格分割

输出描述:
    输出一个数字为屏幕上字母的总数量

示例一:
    输入:
      1 1 1
    输出:
      3

示例二:
输入:
1 1 5 1 5 2 4 4
输出:
2

*/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

using namespace std;
#if 1
int main()
{
	char num;
	string start;
	string s1;
	string jtb;
	//string ctrl_A;
	bool tag = 0;//记录是否被选中!
	getline(cin, start);
	
	for (int i = 0; i < start.size(); i++) {
		switch (start[i])
		{
		case '1':
			if (tag == 1) {
				s1.clear();
				tag = 0;
			}
			s1 += 'A';
			break;
		case '2':
			
			if (s1.empty() ) { break; }
			jtb = s1;
			break;
		case '3':
			if (s1.empty() ) { break; }
			jtb = s1;
			s1.clear();
			break;
		case '4':

			if (tag == 1) {
				s1.clear();
				s1 += jtb;
				tag = 0;
			}
			else {
				s1 += jtb;
			}
			break;
		case '5':
			if (s1.empty()) {
				break;
			}
			tag = 1;
		
			break;
		default:
			
			break;
		}
		
	}
	cout << s1.size() << endl;
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值