5.13 有效的括号 && 查找特定元素范围

本文介绍了如何用Java实现有效括号检查的Solution类,同时展示了利用二分查找原理解决查找特定元素范围的searchRange方法。重点讲解了字符串处理和数组搜索算法在信息技术中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有效的括号

easy money

class Solution {
    public boolean isValid(String s) {
     StringBuilder a = new StringBuilder();
    	for(int i=0; i<s.length(); i++) {
    		if(s.charAt(i)=='[' || s.charAt(i)=='{' || s.charAt(i)=='(') {
    			a.append(s.charAt(i));
    		}
    		else if(s.charAt(i)==']') {
    			if(a.length()==0)return false;
    			if(a.charAt(a.length()-1)=='[')a.deleteCharAt(a.length()-1);
    			else break;
    		}
    		else if(s.charAt(i)=='}') {
    			if(a.length()==0)return false;
    			if(a.charAt(a.length()-1)=='{')a.deleteCharAt(a.length()-1);
    			else break;
    		}
    		else if(s.charAt(i)==')') {
    			if(a.length()==0)return false;
    			if(a.charAt(a.length()-1)=='(')a.deleteCharAt(a.length()-1);
    			else break;
    		}
    	}
    	if(a.length()==0)return true;
    	else return false;
    }
}

查找特定元素范围

原理思想:二分查找

 需要注意while里面i<j或者i<=j和ij的初始值有关

class Solution {
    public int[] searchRange(int[] nums, int target) {//升序数组
    	int i=0, j=nums.length-1;
    	int mid;
    	int[] res = {-1,-1};
    	if(nums.length==0 || target<nums[i] || target>nums[j])return res;
    	while(i<=j) {
    		mid=i+(j-i)/2;
    		if(nums[mid]<target) {
    			i=mid+1;
    		}
    		else if(nums[mid]>target) {
    			j=mid-1;
    		}
    		else if(nums[mid]==target) {
    			j=mid-1; //确定左边界
    		}
    	}
    	int left=i;
    	i=0;
    	j=nums.length-1;
    	while(i<=j) {
    		mid=i+(j-i)/2;
    		if(nums[mid]<target) {
    			i=mid+1;
    		}
    		else if(nums[mid]>target) {
    			j=mid-1;
    		}
    		else if(nums[mid]==target) {
    			i=mid+1;  //确定右边界
    		}
    	}
    	int right=j;
        if (right < 0 || nums[right] != target)
    	return res;
    	res[0]=left;res[1]=right;
    	return res;
    }	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值