首页 > 试题广场 >

打字

[编程题]打字
  • 热度指数:6150 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛妹在练习打字,现在按照时间顺序给出牛妹按下的键(以字符串形式给出,'<'代表回退backspace,其余字符均是牛妹打的字符,字符只包含小写字母与'<'),牛妹想知道最后在屏幕上显示的文本内容是什么。若为空则返回一个空串。

在文本内容为空的时候也可以按回退backspace(在这种情况下没有任何效果)。

示例1

输入

"acv<"

输出

"ac"

说明

牛妹在打完"acv"之后按了回退,所以最后是"ac"

备注:
给定一个字符串s,代表牛妹所按下的按键。
import java.util.*;

public class Solution {
    public String Typing (String s) {
        // 入栈
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            if (c == '<') {
                if (!stack.empty()) {
                    stack.pop();
                }
                continue;
            }
            stack.push(c);
        }
        // 出栈
        String result = "";
        while (!stack.empty()) {
            result = stack.pop() + result;
        }
        return result;
    }
}

发表于 2021-11-15 14:25:33 回复(0)
import java.util.*;
public class Solution {
    public String Typing (String s) {
        // write code here
        Stack st=new Stack();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)!='<')
                st.push(s.charAt(i));
            else if(!st.isEmpty())
                st.pop();
        }
        StringBuffer ans =new StringBuffer();//由于String是不可变的,这里使用StringBuffer
        while(! st.isEmpty())
            ans.append(st.pop());//这个顺序应该是和答案反序的,使用reverse方法反序;
         return  new String(ans.reverse());
}}
发表于 2020-10-09 20:56:43 回复(0)
JAVA的要69ms,Go的只用5ms。我吐了。
 public String Typing (String s) {
        StringBuilder sb=new StringBuilder();
        int i=0;
        if(s.charAt(0)=='<'){
            i++;
            sb.append("");
        }
        while(i<=s.length()-1){
            if(s.charAt(i)=='<'){
                if(sb.length()>0)
                    sb.deleteCharAt(sb.length()-1);
                else
                    ;
            }
            else{
                sb.append(s.charAt(i));
            }
            i++;
        }
        return sb.toString();
    }
发表于 2020-06-08 23:49:42 回复(0)

问题信息

难度:
3条回答 5261浏览

热门推荐

通过挑战的用户

查看代码