蓝桥杯百度百科:

蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心举办的全国性IT学科赛事。共有北京大学、清华大学、上海交通大学等全国1200余所高校参赛,累计参赛人数超过40万人。2020年,蓝桥杯大赛被列入中国高等教育学会发布的“全国普通高校学科竞赛排行榜”,是高校教育教学改革和创新人才培养的重要竞赛项目


第十三界蓝桥杯已经开始报名了!你准备好了吗?从今天开始小梦带着小伙伴们一起刷历年真题,带领小伙伴们顺利考上岸~

第十届蓝桥杯——JAVA真题集锦_java


第十届蓝桥杯——JAVA真题集锦_代码实现_02

 第十届蓝桥杯JAVA真题

⭐不同子串⭐

问题描述

解题思路

代码实现

⭐数列求值⭐

问题描述

解题思路

代码实现

⭐数的分解⭐

问题描述

解题思路

代码实现

⭐特别数的和⭐

问题描述

解题思路

代码实现


⭐不同子串⭐

问题描述

第十届蓝桥杯——JAVA真题集锦_子串_03

解题思路

根据题目描述,我们抓住题目的几个重点就能很快的找到解决办法。

首先,非空子串是长度至少为1连续的一段字符。其次我们要找出不重复的子串。

那我们可以使用双重for循环,循环遍历出所有可能的子串集合,子串集合通过substring函数获取。每次循环最后把得到的子串存放到hashmap集合中。最后集合大小是多大,那就有多少子串。

hashmap的特点就是:如果有重复的字符串会覆盖之前的字符串

代码实现

import java.util.HashMap;
 
public class Main {
	public static void main(String[] args) {
		String s = "0100110001010001";
		HashMap<String, Integer> map = new HashMap<>();
		
		for (int i = 0; i <= s.length(); i++) {
			for (int j = i+1; j <= s.length(); j++) {
				map.put(s.substring(i, j), 1);
			}
		}
		
		System.out.println(map.size());
	}
}

答案 :100


⭐数列求值⭐

问题描述

解题思路

递推和递归

递归数字太大,会出现栈溢出,我们用递推来做。

代码实现

public class Main {
	public static void main(String[] args) {
		
		int a = 1,b = 1,c = 1;
		for (int i = 4; i <= 20190324; i++) {
            //为了防止超过最大整数,可以对100000取余
			int temp = (a + b + c)%100000;
			a = b%100000;
			b = c%100000;
			c = temp;
		}
		
		System.out.println(c);
	}
}

答案 :4659


⭐数的分解⭐

问题描述

解题思路

我们可以使用全排列,然后把每一中情况都存储起来。

代码实现

public class Main {
	public static void main(String[] args) {
		int n = 2019;
		int t = 0;
		loop:for (int i = 1; i < n; i++) {
			if((i+"").indexOf("2")!=-1||(i+"").indexOf("4")!=-1)
				continue;
			loop2:for (int j = i+1; j < n; j++) {
				if(i==j)
					continue loop2;
				if((j+"").indexOf("2")!=-1||(j+"").indexOf("4")!=-1)
					continue;
				int k = n-i-j;
				if(k<=0)
					break loop2;
				if(i==k)
					continue loop2;
				if(j==k)
					continue loop2;
				if((k+"").indexOf("2")!=-1||(k+"").indexOf("4")!=-1)
					continue loop2;
				t++;
			}
		}
		System.out.println(t/3);
	}
}

答案: 40785


⭐特别数的和⭐

问题描述

代码实现

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = sc.nextInt();
		long num = 0;
		
		for (int i = 1; i <= n; i++) {
			String s = i + "";
			if(s.indexOf("2")!=-1||s.indexOf("0")!=-1||s.indexOf("1")!=-1||s.indexOf("9")!=-1)
				num += i;
		}
		System.out.println(num);
	}
}

 这篇文章如果对小伙伴们有帮助的话,希望点个赞支持一下~      十分感谢~

第十届蓝桥杯——JAVA真题集锦_子串_04