链接:笔记草稿_小红书笔试题_牛客网笔记草稿
https://www.nowcoder.com/questionTerminal/0823ca800ee04706a7e2dafc837dc236
来源:牛客网
薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
1.输入字符包括,"(" , ")" 和 "<"和其他字符。
2.其他字符表示笔记内容。
3.()之间表示注释内容,任何字符都无效。 括号保证成对出现。
4."<"表示退格, 删去前面一个笔记内容字符。括号不受"<"影响 。
输入描述:
输入一行字符串。长度<=10000.
输出描述:
输出一行字符串,表示最终的笔记内容。
示例1
Corona(Trump)USA<<
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
- //如果检测到 '(' 括号的个数加一
- 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));
- }