当前位置: 首页 > news >正文

吸血鬼数字

本人不是精通算法,闲来无事写了个求吸血鬼数字的函数,性能有点慢,希望大神批评指正给点意见,怎么修改下能把性能提升。

package com.cnroa.util;

import java.util.Arrays;
import java.util.List;

public class Test {

    public static void main(String[] args){//        Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);
//        String[] aa = {"上海","云南","河北","湖南","西藏自治区","陕西","香港特别行政区","黑龙江"};
//        Arrays.sort(aa,com);
//        for(String i : aa){System.out.println(i);}
        xugNumber(6);
//        rejectOne(8918);
    }
    
    public static List<Integer> xugNumber(Integer num){
        if(num%2 != 0){
            System.out.println("需要计算的不是偶位数");
            return null;
        }
        Integer first = getMin(num);
        Integer end = getMax(num);
        for(int i=first;i<=end;i++){
            boolean flag = rejectOne(i);
            if(flag) System.out.println(i);
        }
        return null;
    }
    public static Integer getMin(Integer num){
        StringBuffer sb = new StringBuffer();
        sb.append("1");
        for(int i=0;i<num-1;i++) sb.append("0");
        return Integer.parseInt(sb.toString());
    }
    public static Integer getMax(Integer num){
        StringBuffer sb = new StringBuffer();
        sb.append("1");
        for(int i=0;i<num;i++) sb.append("0");
        return Integer.parseInt(sb.toString())-1;
    }
    public static boolean rejectOne(Integer number){
        Integer half = (number+"").length()/2;
        Integer first = getMin(half);
        Integer end = getMax(half);
        for(int i=first;i<=end;i++){
            for(int j=first;j<=end;j++){
                if(i*j==number){
                    boolean flag = rejectThree(i+"",j+"",number+"");
                    if(flag){
                        System.out.println(i+"---"+j);
                        return true;
                    }
                }
            }
        }
        return false;
    }
    public static boolean rejectTwo(String half,String all){
        boolean flag = true;
        char[] temp = half.toCharArray();
        for(char a : temp){
            if(!all.contains(a+"")) flag = false;
        }
        for(int i=0;i<temp.length-1;i++){
            for(int j=i+1;j<temp.length;j++){
                if(temp[i] == temp[j]) flag = false;
            }
        }
        return flag;
    }
    public static boolean rejectThree(String one,String two,String all){
        boolean flag = false;
        char[] temp1 = one.toCharArray();
        int numOne = 0;
        for(char a : temp1){
            if(all.contains(a+"")) numOne++;
        }
        int numTwo = 0;
        for(char a : temp1){
            if(all.contains(a+"")) numTwo++;
        }
        
        String[] sortSource =all.split("");
        String[] sortTarget =(one+two).split("");
        Arrays.sort(sortSource);
        Arrays.sort(sortTarget);
        if(numOne == all.length()/2 && numTwo == all.length()/2 && arrayToString(sortSource).equals(arrayToString(sortTarget))){
            flag = true;
        }
        return flag;
    }
    public static String arrayToString(String[] s){
        StringBuffer sb = new StringBuffer();
        for(String i : s)    sb.append(i);
        return sb.toString();
    }
}

 

转载于:https://www.cnblogs.com/LoveHe/p/5257842.html

相关文章:

  • DropdownList
  • Linq 内联左联等
  • 初探博客园
  • ActiveMQ消息的可靠性机制(转)
  • 啦啦啦~
  • select 相关
  • JSP具体篇——out
  • 20145109《Java程序设计》第二周学习总结
  • Mac OS X下高速拷贝文件路径
  • Material Design之TextInputLayout使用示例
  • redis配置详情
  • JS 笔记(一)
  • 作业二:四则运算
  • Eclipse使用快捷键代码格式化有时失效解决办法
  • 出差(二十四)失控
  • 【Leetcode】101. 对称二叉树
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • MySQL QA
  • 关于 Cirru Editor 存储格式
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于HAProxy的高性能缓存服务器nuster
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 收藏好这篇,别再只说“数据劫持”了
  • 学习JavaScript数据结构与算法 — 树
  • 在weex里面使用chart图表
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (C++20) consteval立即函数
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (二)pulsar安装在独立的docker中,python测试
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十)c52学习之旅-定时器实验
  • (转)visual stdio 书签功能介绍
  • (转载)Google Chrome调试JS
  • .bashrc在哪里,alias妙用
  • .NET Core跨平台微服务学习资源
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET构架之我见
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • [ACTF2020 新生赛]Include
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [ITIL学习笔记]之事件管理(2)
  • [jquery]this触发自身click事件,当前控件向上滑出
  • [Study]Vue
  • [Swift] Enum 好用, Enum 可以更易用