算法题练习

复制代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
   public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int sum = 0;
        int []digits={0,1,2,9};
        for (int i = 1; i <=n ; i++) {
            if (containsDigit(i,digits)){
                sum+=i;
            }
        }
        System.out.println(sum);
    }
    private static boolean containsDigit(int number,int[]digits){
        while(number>0){
           int digit=number%10;
            for (int i : digits) {
                if (digit==i){
                    return true;
                }
            }
number/=10;
        }
        return false;
    }
}
复制代码
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();
        int[] arr = new int[T];
        for (int i = 0; i < T; i++) {
            int n = scanner.nextInt();
            arr[i] = n;
        }
        Arrays.sort(arr);
        //两个最小的负数,一个最大的正数  三个最大的正数
        if (T == 3) {
            System.out.println(arr[0] * arr[1] * arr[2]);
        } else {
            int[] arr1 = new int[1000];
            int[] arr2 = new int[1000];
            int count1 = 0;
            int count2 = 0;
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] < 0) {
                    count1++;
                    arr1[i] = arr[i];
                }
                if (arr[i] > 0) {
                    count2++;
                    arr2[i] = arr[i];
                }
            }
            if (count1 == 0&&count2==T) {
                System.out.println(arr2[999] * arr2[998] * arr2[997]);
                return;
            }else if (count2==0&&count1==T){
                System.out.println(arr1[999] * arr1[998] * arr1[997]);
            }
            if (count2==0&&count1<T) {
                System.out.println(0);
                return;
            }
            Arrays.sort(arr1);
            Arrays.sort(arr2);
            int sum1 = arr1[0] * arr1[1] * arr2[999];
            int sum2 = arr2[999] * arr2[998] * arr2[997];
            System.out.println(Math.max(sum1, sum2));
        }
    }
}
复制代码
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
       String start = scanner.nextLine();
        String end = scanner.nextLine();
        //String start="**********";
        //String end="o****o****";
       char[] starts =start.toCharArray();
        char[] ends =end.toCharArray();
        int startNum=0;
        int endNum=0;
        for (int i = 0; i < starts.length; i++) {
            if (starts[i] != ends[i]) {
                startNum = i;
               break;
            }
        }
        for (int i = starts.length-1; i >=0 ; i--) {
            if (starts[i]!=ends[i]&&i!=startNum){
                endNum=i;
                break;
            }
        }
        System.out.println(endNum-startNum);
    }
}

这是我自己写的代码。我觉得挺对的,但是不知道为啥不通过。后来知道了,圆圈并不是只会出现一对,我是按一对来写的

复制代码
import java.util.Scanner;

public class Main11 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char [] a=scanner.nextLine().toCharArray();
        char [] b=scanner.nextLine().toCharArray();
        int result=0;
        for (int i = 0; i < a.length; i++) {
            if (a[i]!=b[i]){
                a[i+1]=a[i+1]=='*'?'o':'*';
                result++;
            }
        }
        System.out.println(result);
    }
}
相关推荐
拿破轮几秒前
使用通义灵码解决复杂正则表达式替换字符串的问题.
java·服务器·前端
j***51891 分钟前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
q***9944 分钟前
index.php 和 php
开发语言·php
oioihoii7 分钟前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
程序员东岸16 分钟前
《数据结构——排序(中)》选择与交换的艺术:从直接选择到堆排序的性能跃迁
数据结构·笔记·算法·leetcode·排序算法
程序员-King.18 分钟前
day104—对向双指针—接雨水(LeetCode-42)
算法·贪心算法
笙年33 分钟前
JavaScript Promise,包括构造函数、对象方法和类方法
开发语言·javascript·ecmascript
WZTTMoon38 分钟前
Spring Boot 启动全解析:4 大关键动作 + 底层逻辑
java·spring boot·后端
章鱼哥73039 分钟前
[特殊字符] SpringBoot 自定义系统健康检测:数据库、Redis、表统计、更新时长、系统性能全链路监控
java·数据库·redis
神仙别闹42 分钟前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法