【蓝桥杯】不同子串

举报
西红柿炒鸡蛋儿 发表于 2022/03/30 12:24:20 2022/03/30
【摘要】 问题描述  小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到  40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。请问,在 1 到 n 中,所有这样的数的和是多少?输入格式  输入一行包含两个整数 n。输出格式  输出一行,包含一个整数,表示满足条件的数的和。样例输入40样例输出574评测用例规模与约定  对于 ...

问题描述

  小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到
  40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。请问,在 1 到 n 中,所有这样的数的和是多少?

输入格式

  输入一行包含两个整数 n。

输出格式

  输出一行,包含一个整数,表示满足条件的数的和。

样例输入

40

样例输出

574

评测用例规模与约定

  对于 20% 的评测用例,1 ≤ n ≤ 10。 对于 50% 的评测用例,1 ≤ n ≤ 100。对于 80% 的评测用例,1 ≤ n ≤ 1000。对于所有评测用例,1 ≤ n ≤ 10000。

package 省题2019;
 
import java.util.HashMap;
import java.util.Map;
 
public class 不同子串 {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//给定字符串
         String str =  "0100110001010001";
         
         //求出字符串的长度
         int length = str.length();
 
         //使用map集合去重
         Map<String,Integer> map = new HashMap<String,Integer>();
         
         //利用循环截取字符串方式
         for(int i = 0; i <= length; i++) {
        	 for(int j = i; j <= length; j++) {
        		 String ss = str.substring(i,j);
        		 map.put(ss,0);
        	 }
         }
         
         //这里要减一,因为(i = 0 ,j = 0)(i = j = length)时,
         //截取的字符串为"",不是0也不是1
         System.out.println(map.size() - 1);
	}
 
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。