每日一练-----Day04

🔥 一、最接近的三数之和(数组和双指针)

给定一个包括n个整数的数组nums和一个目标值target.找出nums中的三个整数,使得它们的和与target最接近.返回这三个数的和。假定每组输入只存在唯一答案

例子:
输入 nums =[- 1 , 2 , 1, -4 ] target = 1
输出: 2

不会

🔥 二、有效的括号

给定一个只包括’(’ , ‘)’ , ‘[’ , ‘]’ , ‘{’ , '}'的字符串s,判断字符串是否有效
有效字符串需满足:
🍎1、左括号必须用相同类型的右括号闭合
🍎2、左括号必须以正确的顺序闭合

package day04.first;

import java.util.Stack;

public class Solution {
    public static void main(String[] args) {
        String str = "(124546{[})";
        boolean a =   isValid(str);
        System.out.println(a);
    }

    public static boolean isValid (String s){

        //定义左括号和右边的括号
        char [] parentheses = { '(' , '[' , '{' , ')' , ']' , '}'} ;
        int i= 0 ;
        char c ;
        int [] sum = {0,0,0};
        Stack<Integer> stack = new Stack<>();
        while (i < s.length()){
            c = s.charAt(i) ;
            for (int j = 0; j <= 2 ; j++) {
                if(c == parentheses[j]){
                    stack.push(j);
                    sum[j] ++ ;
                }else if (c == parentheses[j + 3 ]){
                    if(stack.size() ==0  || stack.peek() != j ){
                        return false ;
                    }
                    stack.pop();
                    sum[j] -- ;
                }else {

                }
            }

            i++ ;
        }
        for (int j = 0; j <= 2  ; j++) {
            if (sum[j] != 0) {
                return false;
            }
        }
        return true ;
        }
    }

在这里插入图片描述

在这里插入图片描述

🔥 三、改写字符串

键盘录入一个字符串,将字符串种的大写改成小写,小写改成大写,数字改成*
例如:hello123 输入后为HELLO***

思路:大小写转换

package day04.second;

import java.util.Scanner;
// 例如:hello123 输入后为HELLO***
public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in) ;
        String s  = scanner.next();


        //遍历字符串s
        StringBuffer sb = new StringBuffer() ;
        for (int i = 0; i <s.length() ; i++) {
            //获取字符串中每一个字符
            char ch  =  s.charAt(i) ;
            if (  (ch >= 'a' && ch < 'z') ) {
                char temp =    (char)( ch - 32 ) ;
                sb.append(temp);
            }
            if( (ch >= 'A' && ch < 'Z')  ){
                char temp =    (char)( ch - 32 ) ;
                sb.append(temp);
            }
            if( ch >= '0'  && ch<= '9'){
                ch = '*';
                sb.append(ch);
            }
        }

        System.out.println(sb.toString());


    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱爱代码

互相学习,互相进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值