算法题练习

复制代码
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);
    }
}
相关推荐
怪兽201420 小时前
Redis过期键的删除策略有哪些?
java·数据库·redis·缓存·面试
筏.k20 小时前
C++ 设计模式系列:生产者-消费者模式完全指南
开发语言·c++·设计模式
liliangcsdn20 小时前
python如何写数据到excel示例
开发语言·python·excel
workflower1 天前
单元测试-例子
java·开发语言·算法·django·个人开发·结对编程
YuanlongWang1 天前
C# 基础——装箱和拆箱
java·开发语言·c#
b78gb1 天前
电商秒杀系统设计 Java+MySQL实现高并发库存管理与订单处理
java·开发语言·mysql
wb043072011 天前
性能优化实战:基于方法执行监控与AI调用链分析
java·人工智能·spring boot·语言模型·性能优化
LXS_3571 天前
Day 05 C++ 入门 之 指针
开发语言·c++·笔记·学习方法·改行学it
MicroTech20251 天前
微算法科技(MLGO)研发突破性低复杂度CFG算法,成功缓解边缘分裂学习中的掉队者问题
科技·学习·算法
天若有情6731 天前
Java Swing 实战:从零打造经典黄金矿工游戏
java·后端·游戏·黄金矿工·swin