`

一个关于得到数字个数的问题?

阅读更多
今天遇到这样一个问题?
我想得到1000000之内包含2、8、00这几个数字的个数?
要求这个数字里必须有2,8,和两个0,这些数字的位置可以是任意的排放。
我也得到结果啦,不过算法很复杂,请问如果用正则表达式要怎么去实现?
以下是本人的复杂算法:
@Test
public void testNum() {
int num = 1000000;
int m = 1;
for (int i = 2000; i < num; i++) {
String x = "" + i;
for (int j = 0; j < x.length(); j++) {
// System.out.print(x.charAt(j));
String temp = String.valueOf(x.charAt(j));
// 得到的包含数字2的所有值
if (temp.equals("2")) {
// System.out.println(x);
for (int a = 0; a < x.length(); a++) {
String temp1 = String.valueOf(x.charAt(a));
// 决断数字中是否包含数字8
if (temp1.equals("8")) {
// System.out.println(x);
for (int b = 0; b < x.length(); b++) {
// 得到当前
String temp2 = String.valueOf(x.charAt(b));
int q = x.indexOf("0");
if (x.indexOf("0", q + 1) > 0) {
// System.out.println(x);
m++;
}
}

}
}
}
}
}
System.out.println("得到数量:" + m / 5);
}

 

分享到:
评论
2 楼 sherlockyao 2008-03-30  
不用正则表达式的,把你的算法改进一下就好了:
public class Matcher {
	private int mark = 0;

	public void match(int digit) {
		switch (digit) {
		case 0:
			mark |= (0 < (mark & 1)) ? 2 : 1;
			break;
		case 2:
			mark |= 4;
			break;
		case 8:
			mark |= 8;
			break;
		}
	}

	public boolean isMatched() {
		return (mark & 15) > 0;
	}
}
//.....
int count = 0;
for (int i = 2000; i < 1000000; i++) {
	Matcher matcher = new Matcher();
	for (int num = i; num > 0; num /= 10) {
		matcher.match(num % 10);
	}
	if (matcher.isMatched()) {
		count++;
	}
}
//.....
1 楼 Eastsun 2008-03-30  
一个简单的组合数学题,笔算也就几分钟的事.

相关推荐

    删数问题给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个

    对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数 最小的删数方案。 «编程任务: 对于给定的正整数a,编程计算删去k个数字后得到的最小数。 Input 由文件input.txt提供输入数据。文件的第1...

    c程序100例 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    在Main函数中,我们初始化了一个空的列表used来记录已使用的数字,并调用了GenerateNumbers函数开始生成三位数。GenerateNumbers函数通过遍历剩余的数字并递归调用自身来生成所有可能的组合。 运行这段代码,你会...

    C++ 贪心算法 删数问题

    对于一个有 n 个数字的正整数 a, 去掉其中任意 k (≤ n) 个数字后, 剩下的数字按原次序排列组成一个新的正整数. 本题对于给定的正整数 a, 请计算删去 k 个数字后得到的最小数. Input 有多个测试用例. 每个测试...

    删数问题(算法)

    试着设计一个算法,找出删去k个数,剩下数字组成的新数最小的删数方案。 输入格式 可输入多组测试数据(不超过50组测试数据),每组测试数据分两行,每行一个数,数的含义如下。 第一行:正整数a(a是大于0的一个n...

    数字母个数

    数字母个数

    从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。

    从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。 处理方法: 1、定义一个字符串数组,保存汉字数字 2、然后将传入的数字转换成字符串,...

    6174数字的验证 测试

    首先,游戏的规则非常简单:选择一个任意的四位数(数字各不相同),按降序和升序排列这些数字,然后相减得到一个新的数字。接着,重复这个过程,即对新得到的数字进行排序并相减,直到结果变为6174或只剩下一个数字...

    显示整数各位数字

    在编程领域,有时我们需要将一个整数分解成其各位数字并分别显示出来。在这个场景下,C语言可以提供一种简洁而高效的方法来实现这个功能。本文将深入探讨如何使用C语言编写小程序,来显示整数的每一位数字。 首先,...

    Excel_数字转化成以文本形式存储的数字

    在 Excel 中,将数字转化成以文本形式存储的数字是一个非常重要的主题。通常情况下,我们都是将以文本形式存储的数字转换成一般数字,但是今天我们要讨论的是如何将数字转换成以文本形式存储的数字。 在使用 OA ...

    star编程问题-用0~9十个数字排列成五角星的图形

    在编程领域,"star编程问题"是一个有趣且富有挑战性的任务,它要求我们根据一个四位数,使用0到9这十个数字构造出一个五角星的图形,并从中提取出特定的数字序列。这个任务结合了图像处理、字符串操作以及算法设计,...

    编程实现输入一个整数,显示它的位数,并显示它的各位数字,及其各位数字的和

    本示例将探讨如何使用Delphi编程语言来实现一个程序,该程序能够接收用户输入的一个整数,然后显示出这个整数的位数、各位数字以及这些数字的和。下面我们将详细讲解实现这一功能所需的步骤和技术。 首先,我们需要...

    用C语言编写的猜数字游戏

    【标题】"用C语言编写的猜数字游戏"是一个经典的编程练习项目,它涉及到了C语言的基本语法、随机数生成、循环控制结构以及条件判断等多个关键知识点。这个游戏的核心是计算机生成一个四位数字,然后让用户尝试猜测这...

    C# 数字华容道 数字拼图

    通过以上步骤,我们可以利用C#实现一个功能完善的数字华容道游戏,同时在编程过程中提升我们的逻辑思维和问题解决能力。无论是初学者还是经验丰富的开发者,都能从中得到乐趣和挑战。希望这个项目能激发你对C#编程的...

    C语言猜四个数字游戏

    这可以通过两个循环实现,一个用于比较所有数字,另一个用于计算位置正确的数字。 5. **错误处理**:在游戏过程中可能会遇到各种异常情况,如内存分配失败、输入错误等。良好的错误处理机制是程序健壮性的关键,...

    依次去掉n中的某一位数字,得到m个整数,并将这m个整数按从小到大的次序排列后输出.docx

    【题目】将一个m位(m&gt;1)的正整数n,依次去掉n中的某一位数字,得到m个整数,并将这m个整数按从小到大的次序排列后输出。 例如,对于整数387,依次去掉其中一位后,得到三个数:87、37、38,排序后为:37、38、87...

    猜数字游戏 C语言版

    玩家尝试输入一个n位数,得到数字对个数和数字与位置均对个数的反馈,直到完全猜中这个数为止。 如:随机数为123,玩家猜421,则数字对个数2(即1和2在两个数中均有),数字与位置均对个数为1(只有2的数字与位置都...

    数字翻译为英文的c++实现

    3、 要考虑输入溢出问题,此时可以在用户输入后加一个判断,若超出存储数组的最大限度则给用户错误警告并退出。 4、 输出:考虑到格式,如zero-two,最后一个字符后没有“-”,所以最后一个字符要单独输出。

    数字图像是怎么通过模拟转为数字的?.pdf

    例如,我们可以使用 Python 获取一幅 RGB 图片的信息,是一个矩阵 9664*1728*3*8bits 数据,其中第一个像素的值就是(227,232,236),它正是由 3 路 ADC 采集加运放处理得到的数字量。 四、数字电路和单片机原理在...

    数字反转

    给定一个整数,请将该数各个位上的数反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。 Input 输入有多组数据,每组数据就一行为一个整数N(-...

    编写一个java应用程序。用户从键盘输入一个1-9999之间的数

    回文数是指将数含有的数字逆序排列后得到的数和原数相同,例如12121,4224,6778776等都是回文数。 1)程序具有判断用户的输入是否为合法整数的功能。对非法输入(例如含有字母)要进行处理。 2)要判断输入数的位数,...

Global site tag (gtag.js) - Google Analytics