假设以'I'和'O'分别表示进栈和出栈操作,栈的初态和终态均为空,进栈和出栈的操作序列str可表示为仅由'I'和'O'组成的字符串。设计一个算法判定str是否合法。

可以使用栈来模拟进栈和出栈的操作。遍历字符串str,当遇到'I'时,将一个元素进栈;当遇到'O'时,判断栈是否为空,如果为空则返回false,否则将一个元素出栈。最后判断栈是否为空,如果为空则返回true,否则返回false。

以下是Java代码实现:

import java.util.Stack;

public class StackOperation {
    public static boolean isValid(String str) {
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c == 'I') {
                stack.push(c);
            } else if (c == 'O') {
                if (stack.isEmpty()) {
                    return false;
                }
                stack.pop();
            }
        }

        return stack.isEmpty();
    }

    public static void main(String[] args) {
        String str = "IOIOIO";
        System.out.println(isValid(str));  // 输出true

        str = "IIOOIO";
        System.out.println(isValid(str));  // 输出false
    }
}

上述代码中,isValid方法用于判断字符串str是否合法。在main方法中,我们分别测试了两个例子,第一个例子中字符串合法,输出为true;第二个例子中字符串不合法,输出为false。

栈操作合法性判断算法及Java代码实现

原文地址: http://www.cveoy.top/t/topic/pjfs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录