淘宝代码网站有哪些,装修公司工装公司,传奇手游平台,广州市人口栈
首先#xff0c;我们定义一个isValid方法#xff0c;该方法接受一个字符串s作为参数#xff0c;并返回一个布尔值来表示该字符串是否有效。
public boolean isValid(String s) {// 如果字符串为空#xff0c;则自然是有效的if (s.isEmpty())return true;// 创建一个栈…栈
首先我们定义一个isValid方法该方法接受一个字符串s作为参数并返回一个布尔值来表示该字符串是否有效。
public boolean isValid(String s) {// 如果字符串为空则自然是有效的if (s.isEmpty())return true;// 创建一个栈用于存储遍历过程中遇到的左括号StackCharacter stack new Stack();// 遍历字符串中的每个字符for (char c : s.toCharArray()) {// 如果字符是左括号(、{ 或 [if (c ()stack.push((); // 将左括号压入栈中else if (c {)stack.push({); // 将左括号压入栈中else if (c [)stack.push([); // 将左括号压入栈中// 如果字符是右括号)、} 或 ]else {// 检查栈是否为空如果为空说明没有匹配的左括号返回falseif (stack.isEmpty())return false;// 弹出栈顶的左括号并与当前右括号进行比较char top stack.pop();// 如果左右括号不匹配返回falseif (c ! getClosingBracket(top))return false;}}// 如果循环结束后栈为空说明所有括号都匹配成功返回true// 如果栈不为空说明有未匹配的左括号返回falsereturn stack.isEmpty();
}在上面的代码中我们使用了一个辅助方法getClosingBracket它接收一个左括号字符作为参数并返回对应的右括号字符。
// 辅助方法用于根据左括号返回对应的右括号
private char getClosingBracket(char openingBracket) {if (openingBracket ()return );else if (openingBracket {)return };else if (openingBracket [)return ];else// 如果不是左括号返回一个特殊字符这里使用\0但通常不会执行到这一分支return \0;
}在isValid方法中我们首先检查字符串是否为空如果为空则自然是有效的直接返回true。
接下来我们创建了一个栈用于存储遍历过程中遇到的左括号。
然后我们遍历字符串中的每个字符。对于每个字符我们检查它是否是左括号。如果是左括号我们将其压入栈中。如果字符是右括号我们首先检查栈是否为空。如果栈为空说明没有匹配的左括号返回false。如果栈不为空我们弹出栈顶的左括号并使用getClosingBracket方法获取对应的右括号然后与当前的右括号进行比较。如果它们不匹配也返回false。
最后在循环结束后我们检查栈是否为空。如果栈为空说明所有括号都匹配成功返回true。如果栈不为空说明还有未匹配的左括号返回false。
整个流程就是通过遍历字符串使用栈来辅助匹配括号最终判断字符串是否有效。