122345随意排列,找出满足条件的数

  题目要求:

1.必须包含122345这六个数

2.数字中的第三位(百位)不能为4

3.输出6位数里所有符合以上两个条件的数

代码如下:

    static String[] numberStrings = {"1","2","3","4","5"};

    public static void main(String[] args) {
        for(int i=122345;i<999999;i++){
            onetof(i+"");
        }

    }
    public static void onetof(final String number){
        for(String n:numberStrings){
            if(number.indexOf(n) <0)
                return;
        }
        if(number.indexOf("4") ==3)
            return;
        if(number.lastIndexOf("2") ==number.indexOf("2"))
            return;
        if(number.indexOf("35")>0 || number.indexOf("53")> 0)
            return;

        System.out.println(number);
    }

那么,问题来了,如果不是6位数,而是7位呢,或者其它多少位,所以需要改变一下:

if(number.indexOf("4") == number.length()-3)
            return;

这样就妥妥的了

但是这种方法感觉效率不高,如果有想法,欢迎留言....

时间: 2024-10-10 22:25:41

122345随意排列,找出满足条件的数的相关文章

编程之美 找出符合条件的整数

好不容易把内容看懂~ 最主要的一句话:只需要将10k%N的结果与余数信息数组里非空的元素相加,再去模N,看看会不会出现新的余数~ 时间太紧迫~先把自己写的代码贴上,以后再详解 1 int FindMin(int N) 2 { 3 if(N <= 1) 4 return N; 5 6 int* A = new int[N];//这个是记录模N余i之后的数值 7 8 memset(A, -1, sizeof(int) * N); 9 int factor = 1; 10 A[1] = 1; 11 1

面试算法题:16个数,最多用20次比较,找出第二大的数?

这道题最笨的方法就是先从16个数中选出最大的数,然后再从剩下的15个数中选出最大数就可得到答案,因此,需要15+14=29次比较. 既然这道题要求在20次比较之内就能找出第二大的数,那我们就想能简单的方法. 假设16个数中最大的是A,第二大的是B. 首先将16个数两两进行比较,较大者胜出,然后再在胜出者中进行两两比较,按此方法,最后选出最大数A,如下所示 红色路线是最大数经过的路径. 接下来分析B可能存在的位置. 将16个数分为左部分和右部分各8位: 1.如果A和B在两个不同的部分(A在左部分,

java . 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。

1 import java.util.HashMap; 2 import java.util.Map; 3 import java.util.Map.Entry; 4 //请在小于99999的正整数中找符合下列条件的数,它既是完全平方数, 5 //又有两位数字相同,如:144,676. 6 public class wqs { 7 8 //完全平方数 9 public static boolean iswqs(int n){ 10 int i; 11 double dn=Math.sqrt(n)

一个简单有趣的题(4个变量找出取走的数)

题目: 读入10000000(10^7)个无符号32位整数,从中取走一个.告诉你剩下的9999999个整数.找出取走了哪一个. 要求: 代码最多只能用4个无符号32位整型变量. 解法: 异或运算满足交换率. 故有:a = a^(b^b)^(c^c)^....^(d^d)  =  (a^b^c^....^d)^(b^c^....^d) 代码: int main(){ unsigned int i,a,b,c; b = c = 0; for(i=1;i<=10000000;++i){ scanf(&qu

找出数组中两数之和为指定值的所有整数对

一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值.打印出数组中两数之和为指定值的 所有整数对 二,算法分析 一共有两种方法来求解.方法一借助排序,方法二采用HashSet 方法一: 先将整型数组排序,排序之后定义两个指针left和right.left指向已排序数组中的第一个元素,right指向已排序数组中的最后一个元素 将 arr[left]+arr[right]与 给定的元素比较,若前者大,right--:若前者小,left++:若相等,则找到了一对整数之和为指定值的元素

n个整数中,找出尽可能多的数使他们组成一个等差数列,求最长等差数列的长度

例子:  3,8,4,5,6,2          返回值应该为 :5 这是昨天做的一道优酷土豆的编程题,和leetcode中的128/ Longest Consecutive Sequence 有点相似,但是leetcode题的公差是确定的1,而这道题的公差是不确定的. 本人的写出的是一种通过穷举的方法实现查找最长等差数列,通过hash使查找更为方便,减少了复杂度. int calcAPLength(const vector<int> &intAr) // 找数列中,最长的等差数列的

小代码 &nbsp; 找出重复过半的数 (特性一维数组)

  #include <iostream> using namespace std; int main() {   int a[]={1,2,2,2,2,3,4,5,2,2,4,2,2,2,3};    int count=1,number=a[0];            //  number =0 while in int a[]={1,1,1,1,1,3,4,5,6};error   for(int i=1;i<sizeof(a)/sizeof(a[0]);i++)    {   

LeetCode第十六题-找出数组中三数之和最接近目标值的答案

3Sum Closest 问题简介: 给定n个整数的数组nums和整数目标,在nums中找到三个整数,使得总和最接近目标,返回三个整数的总和,可以假设每个输入都只有一个解决方案 举例: 给定数组:nums=[-1, 2, 1, -4], 目标值:target = 1. 最接近目标值的答案是2 (-1 + 2 + 1 = 2). 解法一: 与上一道题类似,这次要求的是三数之和与目标值的差值最小值,可以定义一个变量来记录这个差值 思路就是想先定义一个最接近的值默认取前三个数的合,然后将数组排序后 小

输入一组数,找出满足某条件的数

1.输入一组数,找出它的最大值,最小值,平均值. 关键点是要把第一个数赋值给min,max,sum 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int min,max,sum,i; 6 cin>>i; 7 min = max =sum = i; // 将输入的第一个数赋值,以便后续比较 8 int n = 0; // 统计输入了多少个数 9 while(cin>>i){ 10 n++; 1