🔥 一、最接近的三数之和(数组和双指针)
给定一个包括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());
}
}