C++栈应用实例:判断字符串是否符合'ab'匹配规则 - Java代码实现

本文将介绍如何使用栈来判断一个字符串是否符合特定的'ab'匹配规则,并提供C++和Java两种语言的代码实现。

规则:

  • 字符串中只包含'a'和'b'两种字符。* 每一个'a'后面必须跟着一个'b',多个'a'需要对应相同数量的'b'。

**C++代码实现:**c++#include #include #include

using namespace std;

string isValid(const string& str) { stack charStack; for (char ch : str) { if (charStack.empty()) { charStack.push(ch); } else { if (charStack.top() == 'a' && ch == 'b') { charStack.pop(); } else { charStack.push(ch); } } } return charStack.empty() ? 'Yes' : 'No';}

int main() { int t; cin >> t; for (int i = 0; i < t; i++) { string temp; cin >> temp; cout << isValid(temp) << endl; } return 0;}

**Java代码实现:**javaimport java.util.Scanner;import java.util.Stack;

public class StringValidation { public static String isValid(String str) { Stack charStack = new Stack<>(); for (char ch : str.toCharArray()) { if (charStack.empty()) { charStack.push(ch); } else { if (charStack.peek() == 'a' && ch == 'b') { charStack.pop(); } else { charStack.push(ch); } } } return charStack.empty() ? 'Yes' : 'No'; }

public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int t = scanner.nextInt();        for (int i = 0; i < t; i++) {            String temp = scanner.next();            System.out.println(isValid(temp));        }    }}

代码解释:

  1. 创建栈: 使用stack<char> (C++) 或 Stack<Character> (Java) 创建一个字符栈,用于存储'a'。2. 遍历字符串: 遍历输入字符串中的每个字符。3. 栈操作: * 如果栈为空,则将当前字符压入栈中。 * 如果栈不为空,且栈顶元素为'a'且当前字符为'b',则将栈顶元素弹出,表示匹配成功。 * 否则,将当前字符压入栈中。4. 判断结果: 遍历结束后,如果栈为空,则说明所有'a'都找到了匹配的'b',返回'Yes',否则返回'No'。

总结:

本文介绍了如何使用栈来判断字符串是否符合'ab'匹配规则,并提供了C++和Java两种语言的代码实现。栈是一种非常有用的数据结构,可以用于解决很多算法问题,希望本文能帮助你更好地理解和使用栈。

C++栈应用实例:判断字符串是否符合'ab'匹配规则  -  Java代码实现

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

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