以下是使用 Java 代码实现的算法来判断字符串是否为形如'序列1@序列2'的合法字符串:

import java.util.Stack;

public class Main {
    public static boolean isValidString(String str) {
        int index = str.indexOf('@');
        if (index == -1 || index == 0 || index == str.length() - 1) {
            // 字符串中不存在@字符或者@字符在开头或结尾,不符合要求
            return false;
        }
        
        // 获取序列1和序列2
        String sequence1 = str.substring(0, index);
        String sequence2 = str.substring(index + 1);
        
        // 创建一个顺序栈
        Stack<Character> stack = new Stack<>();
        
        // 将序列1的字符依次入栈
        for (char c : sequence1.toCharArray()) {
            stack.push(c);
        }
        
        // 比较序列2和序列1的逆序是否相同
        for (char c : sequence2.toCharArray()) {
            if (stack.isEmpty() || stack.pop() != c) {
                return false;
            }
        }
        
        // 如果栈不为空,则序列1比序列2的长度更长,不符合要求
        return stack.isEmpty();
    }
    
    public static void main(String[] args) {
        String str = "ABC@CBA";
        System.out.println(isValidString(str));  // 输出: true
        
        str = "AB@CBA";
        System.out.println(isValidString(str));  // 输出: false
        
        str = "ABC@DEF";
        System.out.println(isValidString(str));  // 输出: false
        
        str = "@ABC";
        System.out.println(isValidString(str));  // 输出: false
        
        str = "ABC@";
        System.out.println(isValidString(str));  // 输出: false
    }
}

希望这可以帮助到你!

Java 算法判断字符串是否为“序列1@序列2”形式

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

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