合法括号序列判断_另类加法

举报
bug郭 发表于 2022/08/26 23:53:22 2022/08/26
【摘要】 合法括号序列判断合法括号序列判断import java.util.*;public class Parenthesis { public boolean chkParenthesis(String A, int n) { // write code here //根据题意,字符串只能由扩号组成! if(n%2==1){//字符长度为奇数,说明...

合法括号序列判断

合法括号序列判断

image-20220430152904625

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;
    }
}

另类加法

另类加法

image-20220430165457059

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。