合法括号序列判断_另类加法
【摘要】 合法括号序列判断合法括号序列判断import java.util.*;public class Parenthesis { public boolean chkParenthesis(String A, int n) { // write code here //根据题意,字符串只能由扩号组成! if(n%2==1){//字符长度为奇数,说明...
合法括号序列判断
import java.util.*;
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
// write code here
//根据题意,字符串只能由扩号组成!
if(n%2==1){//字符长度为奇数,说明不匹配
return false;
}
Stack<Character> stack = new Stack<>();
for(int i = 0;i< n; i++){
char ch = A.charAt(i);
if(ch=='('){
//左括号就入栈!
stack.add(ch);
}else if(ch==')'){
//右括号,匹配出栈!
if(stack.isEmpty()||stack.peek()==')'){
//如果栈空,或者栈顶值为 ')' 说明匹配失败!
return false;
}else{
//匹配成功
stack.pop();
}
}else{
//其他字符说明匹配失败!
return false;
}
}
if(stack.isEmpty()){
return true;
}
return false;
}
}
另类加法
import java.util.*;
public class UnusualAdd {
public int addAB(int A, int B) {
// write code here
// 两个数 异或(^)结果为两数之和 不考虑进位!!!
// 两个数 按位与(&)后,左移1位结果为是否进位, 只考虑进位!
// 例如: 3 + 2
// 3 0011
// 2 0010
//sum = 0011^0010 = 0001
//carry = (0011&0010)<<1 = 0100
//然后再将 sum 和carry 分别赋值给 A和B即可!
// 知道 B == 0也就不用进位,此时sum 结果就为 A+B
int sum = 0;
int carry = 0;
while(B!=0){
sum = A^B;
carry = (A&B)<<1;
A = sum;
B = carry;
}
return A;
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)