Java 算法判断字符串是否为“序列1@序列2”形式
以下是使用 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
}
}
希望这可以帮助到你!
原文地址: http://www.cveoy.top/t/topic/pgs 著作权归作者所有。请勿转载和采集!