java - 为什么在函数外部初始化堆栈比在函数内部初始化堆栈执行得更快?

标签 java performance stack

我正在做 LeetCode 问题,我注意到当我在声明函数之前初始化 Stack 时,我的代码执行得更快:

class Solution {
Stack <Character>myStack = new Stack<Character> ();
public boolean isValid(String s) {
    int sLen=s.length();
    if (sLen%2!=0)
        return false;    
    // Stack <Character>myStack = new Stack<Character> ();
    for(int i=0; i<sLen; i++){
        if ((s.charAt(i)==')')  && !myStack.empty() && (myStack.peek()=='(')) 
            myStack.pop();
        else if (s.charAt(i)==']'  && !myStack.empty() && myStack.peek()=='[')
            myStack.pop();
        else if (s.charAt(i)=='}'  && !myStack.empty() && myStack.peek()=='{')
            myStack.pop();
        else
            myStack.push(s.charAt(i));
    }     
    return myStack.empty();
}}

而不是在 boolean 函数中声明它:

class Solution {
//Stack <Character>myStack = new Stack<Character> ();
public boolean isValid(String s) {
    int sLen=s.length();
    if (sLen%2!=0)
        return false;    
    Stack <Character>myStack = new Stack<Character> ();
    for(int i=0; i<sLen; i++){
        if ((s.charAt(i)==')')  && !myStack.empty() && (myStack.peek()=='(')) 
            myStack.pop();
        else if (s.charAt(i)==']'  && !myStack.empty() && myStack.peek()=='[')
            myStack.pop();
        else if (s.charAt(i)=='}'  && !myStack.empty() && myStack.peek()=='{')
            myStack.pop();
        else
            myStack.push(s.charAt(i));
    }     
    return myStack.empty();
}}

最佳答案

这是因为在第一个代码段中,您仅初始化 myStack 一次,而在第二个代码段中,您在方法内对其进行初始化,因此每次都会初始化 myStack调用 isValid 方法的时间。

关于java - 为什么在函数外部初始化堆栈比在函数内部初始化堆栈执行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48142405/

相关文章:

java - 如何添加 fragment 以使我的应用程序不会在屏幕上显示为空白

java - 从内容 URI 获取目录路径

regex - 当传递正则表达式模式的文件时,Egrep 命令挂起

performance - 关于loadrunner中的web_reg_find()

java - 使用java rmi激活系统的主要目的是什么?

python - 从 StringIO 读取直到遇到某个字节的快速方法

c - Segmentation Failure 错误 - 使用链表实现堆栈

c - 攻击堆栈

java - 迭代类的对象

java - FirebaseCredentials.fromCertificate(serviceAccount) 无法解析服务帐户 : 'project_id' must be set JSONException