10000到99999之间找出所有只有两个不同数字的数,怎么写条件语句啊?
比如10011 22332 78777
不使用正则表达式
不计较运行效率,当然越快越好
比如10011 22332 78777
不使用正则表达式
不计较运行效率,当然越快越好
解决方案 »
- 用java随机生成不同的数
- java.io.IOException: No such file or directory
- 问一个关于JAVA桌面应用程序与WINDOWS窗口之间文件相互拖曳的问题
- 问一个JAVA中垃圾回收机制的问题
- 头痛的事务管理问题
- 怎樣將存放于數據庫PDF文件顯示在瀏覽器中?
- 问树形结构模型数据库的设计问题?!要求提取数据时效率高,而且数据库的结构在各种大型数据库通用,维护方便!
- 重出江湖
- unreported exception: java.lang.ClassNotFoundException
- 在applet中弹出对话框,需要那些.jar支持?(IE中运行)
- 急!!!HttpURLConnection无限等待的问题!!!
- 关于:JFC下applicationwindow的composite之间的转换问题。求助各位牛人,在线等。
楼主【jayray007】截止到2008-07-30 15:44:00的历史汇总数据(不包括此帖):
发帖的总数量:7 发帖的总分数:357 每贴平均分数:51
回帖的总数量:47 得分贴总数量:14 回帖的得分率:29%
结贴的总数量:7 结贴的总分数:357
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=jayray007
// TODO Auto-generated method stub
for(int i=10000;i<99999;i++)
{
String str=String.valueOf(i);
HashSet set=new HashSet();
for(int j=0;j<str.length();j++)
{
set.add(str.charAt(j));
}
if(set.size()==2)
{
System.out.println(i);
}
}
}
接分
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=10000;i<100000;i++){
if(judge(i))
System.out.println(i);
}
}
public static boolean judge(int i){
char[] chars=Integer.toString(i).toCharArray();
java.util.Map map=new java.util.HashMap();
for(int index=0;index<chars.length;index++){
map.put(new Character(chars[index]), null);
}
if(map.size()==2)
return true;
return false;
}
}
利用HashMap的中键值的唯一性判断,但是性能不如利用排列组合进行判断的方法
public class TwoSameNumber {
public boolean isTwoNumber(int number) {
HashSet<Integer> set = new HashSet<Integer>();
int[] array = this.number2Array(number);
for(int num : array) {
set.add(num);
}
if(set.size()==2) return true;
return false;
}
private int[] number2Array(int number) {
String numString = String.valueOf(number);
int[] array = new int[numString.length()];
for(int i=0;i<numString.length();i++) {
array[i] = Integer.parseInt(numString.substring(i, (i+1)));
}
return array;
}
public static void main(String[] args) {
TwoSameNumber number = new TwoSameNumber();
for(int i=10000;i<=99999;i++) {
if(number.isTwoNumber(i)) System.out.println(i);
}
}}
for(int i=10000;i<=99999;i++)
{
char [] aa=(i+"").toCharArray();
int count=0;
for(int j=1;j<5;j++)
{
if(aa[0]!=aa[j])
{
count++;
}
if(count>1)
{
break;
}
}
if(count==1)
{
System.out.println(i);
}
}
long end=System.currentTimeMillis();
System.out.println(end-begin);
解决
也要感谢提供其他方法的朋友
import java.util.ArrayList;
import java.util.List;
public class Temp {
public static void main(String[] args) {
List list = new ArrayList();
for (int i = 10000; i <= 99999; i++) {
int j = i;
String binaryString = Integer.toString(j, 10);
for (int k = 0; k < binaryString.length(); k++) {
String digital = binaryString.substring(k, k + 1);
System.out.println(digital);
if (!list.contains(digital)) {
list.add(digital);
}
}
if (list.size() == 2) {
System.out.println("Bingo! " + j);
}
list.clear();
} }
}
0-9取出2个不同数字 然后2^5排列,判断开头是否是0 最后根据 个数 <=2 还是 个数==2 ?
排除全部相同的11111,22222,33333,...
支持!!这个的