A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大神 解决   

9 个回复

正序浏览
如果只是算8位数满足条件的,可以将int i=1改查 int i=10234567;
回复 使用道具 举报
package com.heima.test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.TreeSet;

import javax.management.relation.RelationServiceNotRegisteredException;

public class Test1 {

        public static void main(String[] args) {
                ArrayList<String> list=new ArrayList<>();
                String regex="[1-7][0-7]{0,7}";
                TreeSet<Character>ts=new TreeSet<>();
                for(Integer i=76540000;i<76543210;i++){
                        if( (!(i%2==0)) && i.toString().matches(regex) ){
                        char[]arr=i.toString().toCharArray();
                         for(int j=0;j<arr.length;j++){
                                 ts.add(arr[j]);
                         }
                         if(ts.size()==arr.length){
                                 list.add(i.toString());
                         }
               
                         ts.clear();       
                }       
                }
                System.out.println(list);
}
}
//功能已经实现了,但是数据量还是比较大,计算机扛不住,打印出来的是一位到八位所有满足条件的数
回复 使用道具 举报
说一下我的思路
首先定义一个正则表达式String regex="[1-7][0-7]{0,7}";初步删选条件
然后for循环遍历从1到76543210
找出所有奇数
在已找出的数中找出所有满足正则的数
然后对于每个数进行取各个位,循环比较(通过for循环嵌套),由于同位有一次比较,会有一次相同,设置一个标志位,记录嵌套for循环中比较相等的次数,次数如果超过该数的长度,则不满足条件
将满足条件的数加入到集合中,最后在打印出来
回复 使用道具 举报
就是我 发表于 2016-3-5 17:29
..................
末尾是奇数的都是奇数
11

这几个数字不能重复

点评

如果能add操作返回为true,再讲这个数装入一般数组  发表于 2016-3-6 16:46
遍历1到76543210,先匹配“[1-7][0-7]{0,7}”正则,再判断是否是奇数,最后将其转成字符数组装进HashSet集合  发表于 2016-3-6 16:44
回复 使用道具 举报
..................
末尾是奇数的都是奇数
11
111
1111
''''''''''''
这算奇数吗?   1是这八个数字中的吗,无限个,你让人怎么做
回复 使用道具 举报
就是我 发表于 2016-3-4 09:21
题意不清,你的意思应该是有且只有0-7八个数字吧?

0 ,1,2,3,4,5,6,7这八个数字能组成的所有奇数
回复 使用道具 举报
题意不清,你的意思应该是有且只有0-7八个数字吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马