题目
有一个特殊的五键键盘
上面有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,输入的数字用空格分割
输出描述: 输出一个数字为屏幕上字母的总数量
代码
public int solution(String s){
String[] strings = s.split(" ");
StringBuffer value = new StringBuffer();//存放字符
StringBuffer clipboard = new StringBuffer(); //剪贴板上的内容
boolean flag = false; //是否全选
for (String string : strings) {
switch (string){
case "1":
if (flag){
value = new StringBuffer();
value.append(string);
}else {
value.append(string);
}
break;
case "2":
if (flag){
clipboard.append(value.toString());
}
break;
case "3":
if (flag){
clipboard.append(value.toString());
value = new StringBuffer();
flag = false;
}
break;
case "4":
if (flag){
value = new StringBuffer();
value.append(clipboard.toString());
flag = false;
}else {
value.append(clipboard.toString());
}
break;
case "5":
if (value.length()!=0)
flag = true;
break;
}
}
return value.length();
}
结果展示
ps:该代码未在华为机试平台运行,仅供参考!!!