//最简单的输出单词问题
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        char[] ch=str.toCharArray();
        int i=0,j=0;
        while(i<ch.length){
            if(ch[i]==' '){
                if(i>j){
                    for(int q=j;q<i;q++){
                        System.out.print(ch[q]);
                    }
                    System.out.print(' ');
                }
                j=i+1;
            }
            i++;
        }
        if(i>j){
            for(int k=j;k<i;k++){
                System.out.print(ch[k]);
            }
        }
        sc.close();
    }
}
//最长连续不重复子序列
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int m=100000;
        int[] num=new int[n+1];
        int[] con=new int[m];
        int max=0;
        for(int i=0;i<n;i++){
            num[i]=sc.nextInt();
        }
//众所周知,下面代码部分比较关键
//j指针先移动着,当con里面的数大于1时,也就是重复了,i就会向前跟,直到跑到重复数字的下一个地方,属于是找地方重新开始的感觉
//而max先生就像一个史官,随时记录最长不重复子序列
        for(int i=0,j=0;j<n;j++){
            con[num[j]]++;
            while(con[num[j]]>1){
                con[num[i]]--;
                i++;
            }
            max=Math.max(max,j-i+1);
        }
        System.out.print(max);
    }
}
//挖矿-bb
import java.util.Arrays;
import java.util.Scanner;

// 类名必须为 Main,不可修改
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 读取矿洞数量 n 和最大移动距离 m
        int n = scan.nextInt();
        int m = scan.nextInt();
        // 存储每个矿洞的坐标
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = scan.nextInt();
        }
        // 对矿洞坐标进行排序
        Arrays.sort(arr);

        int maxOre = 0;
        int left = 0;
        // 双指针遍历矿洞区间,通过枚举出所有符合距离小于m的区间,从中选择可得宝石数最大的
        for (int right = 0; right < n; right++) {
            // 若当前区间距离超过最大移动距离 m,则右移左指针
            //Math.min(Math.abs(arr[left]), Math.abs(arr[right]))是用来通过左右指针所指的矿坑位置谁离原点最近,因为可以向左右两个方向移动
            //向左右两个方向任一移动的距离也是m的一部分
            //arr[right] - arr[left]:两个矿坑之间的绝对距离
            while (left <= right && Math.min(Math.abs(arr[left]), Math.abs(arr[right])) + arr[right] - arr[left] > m)
            {
                left++;
                //如果超出了m,就通过左指针右移缩小区间
            }
            // 更新最大矿石数
            maxOre = Math.max(maxOre, right - left + 1);
        }
        // 输出最多能获得的矿石单位数
        System.out.println(maxOre);
        // 关闭 Scanner 对象,释放资源
        scan.close();
    }
}
//洛谷  合法密码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int con=0;
        for(int i=0;i<=str.length()-8;i++){
            for(int n=i+8;n<=i+16&&n<=str.length();n++){
                //字符串截取,不包括n,仅截取i到n-1
                String str1=str.substring(i,n);
                //判断字符串是否有数字
                boolean hasDigit=str1.matches(".*\\d.*");
                //判断字符串是否有符号
                boolean hasSymbal=str1.matches(".*[^a-zA-Z0-9].*");
                if(hasSymbal&&hasDigit) con++;
            }
        }
        System.out.print(con);
    }
}

 

posted on 2025-05-02 21:59  fafrkvit  阅读(5)  评论(0)    收藏  举报