题目
题目链接:https://leetcode-cn.com/problems/check-if-word-is-valid-after-substitutions/
题目大意:就是一个字符串无论怎么插,最后拆开都可以还原成字符串“abc”
第一个方法最简单就是利用String里面的replace方法将字符串“abc”转换成“”最后再判断字符串是否为空。
第二个方法就是利用栈,将字符串分解成字符数组,进行遍历判断
1. 如果字符为a或者b就入栈
2. 如果为c就将栈中的两个字符弹出,如果弹出为ba就继续,如果不是就返回false
3. 如果遍历结束,栈为空则返回true,不是则返回false;
代码
方法一:
while (S.contains("abc"))
S = S.replace("abc", "");
return S.equals("");
方法二:
class Solution {
public boolean isValid(String S) {
char[] s = S.toCharArray();
Stack<Character> stack = new Stack<>();
for (Character c : s) {
if(c!='c') {
stack.push(c);
}
else {
if(stack.isEmpty())
return false;
char b = stack.pop();
if(stack.isEmpty())
return false;
char a = stack.pop();
if(a!='a'||b!='b')
return false;
}
}
if(stack.isEmpty())
return true;
else
return false;
}
}