链接:笔记草稿_小红书笔试题_牛客网笔记草稿 https://www.nowcoder.com/questionTerminal/0823ca800ee04706a7e2dafc837dc236
来源:牛客网
薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
1.输入字符包括,"(" , ")" 和 "<"和其他字符。
2.其他字符表示笔记内容。
3.()之间表示注释内容,任何字符都无效。 括号保证成对出现。
4."<"表示退格, 删去前面一个笔记内容字符。括号不受"<"影响 。
输入描述:
输入一行字符串。长度<=10000.
输出描述:
输出一行字符串,表示最终的笔记内容。
示例1
输入
Corona(Trump)USA<<<Virus
输出
CoronaVirus
解法:
准备一个StringBuilder 对象用于拼接字符串
准备一个int 类型的变量 存储括号的数量
遍历字符串,
{
if (如果检测到 '(' ){
括号的个数加一;
}
if (括号的个数不为0时){
if (如果检测到 ')' ){
括号的个数减一
}
否则结束本次循环;
}
if (如果遇到 '<'){
删除StringBuilder对象最后一个字符,结束本次循环;
}
将字符写入stringBuilder
}
代码:
public static String output(String str){
StringBuilder stringBuilder=new StringBuilder();
int n=str.length();
int num=0;//记录括号的个数
//开始循环
for (int i=0;i<n;i++){
//如果检测到 '(' 括号的个数加一
if (str.charAt(i)=='(')num++;
//括号的个数不为0时
if(num!=0){
//如果检测到 ')' 括号的个数减一
if (str.charAt(i)==')'){
num--;
}
//结束本次循环
continue;
}
//如果遇到 '<'
if(str.charAt(i)=='<'){
//删除末尾字符
stringBuilder.deleteCharAt(stringBuilder.length()-1);
//结束本次循环
continue;
}
//将字符写入stringBuilder
stringBuilder.append(str.charAt(i));
}
return stringBuilder.toString();
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
String str=s.nextLine();
System.out.println(output(str));
}