• 程序------>算法


    一.算法:

      1、算法的定义:

         算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有序序列,并且每条指令表示一个或多个操作。即算法是描述解决问题的方法。(对于给定的问题是可以有多种 算法进行解决的)

      2.算法 

      01:一刀切下式(事后修正)

            String  b="abcdefg"; //结果a,b,c,d,e,f,g
            String result="";
            for(int i=0;i<b.length();i++){
                result+=","+b.charAt(i);//获取每一个字符
                //,a,b,c,d,e,f,g
            }
            result=result.substring(1);
            System.out.println(result);

      02.字符串的常用API  (假设修正法)

    String  b="abcdefgabcd";  //求字符串中是否有重复的字符
            boolean flag=false; // 假设不重复
            for(int i=0;i<b.length();i++){
                char c=b.charAt(i);//获取每一个字符
                if(b.lastIndexOf(c)!=i){
                    flag=true; //重复
                    System.out.println("重复");
                    break;
                }
                System.out.println("不重复");
            }

      03.字符串的常用API  (正则表达式)replaceAll()  

     //在小括号里面的内容我们称之为子组,用$获取子组内容
    String  a="asasasa 2018-07-16 sasa sasas sasa";
    //实现的效果是asasasa 07/16/2018年 sasa sasas sasa
    a=a.replaceAll("([0-9]{4})-([0-9]{2})-([0-9]{2})","$2/$3/$1 年");
    System.out.print(a);

      注:正则表达式常用的两个类

       Pattern
        01:代表正则表达式本身
        02:对我们书写的正则表达式进行预处理
        03:提高我们代码的运行效率
       Matcher
        01:代表正则表达式的计算结果
        02:实现了对正则复杂的操作

      

      04.判断某个字符串是否满足我们定义的正则表达式

    String a="ABC01234";
            a.matches("[A-Z]{1,3}[0-9]{3,5}"); //返回boolean

      05.鸡兔同笼

    /*鸡兔共50头,脚共120只!
            x+y=50;
            2x+4y=120;*/
    
            for(int x=0;x<=50;x++){
                int y=50-x; //得到兔子的数量
                if(2*x+4*y==120){
                    System.out.println(x);
                    System.out.println(y);
                }
            }

      06.枚举与剪枝   找零

    /*需求:找零50元
            现在有的货币是:
            10元 5元  5角
            100   50  5
            求出所有找零方案!*/
    
            int  money=500;
            for (int a = 0; a <=money/100 ; a++) { //100
                for (int b = 0; b <=money/50 ; b++) { //50
                    if ((500-(a*100+b*50)<0)) break; //剪枝
                    int c =(500-(a*100+b*50))/5;//5
                    if (a*100+b*50+c*5==500){
                        System.out.println("10元钱出现的次数=》"+a+"	5元钱出现的次数=》"+b+"	5角钱出现的次数=》"+c);
                    }
                }
            }

      07.枚举与剪枝  求位数

            /*需求:  数字自身平方的尾数=自身  (100W以内)
            0    0
            1    1
            5    25
            6    36
            25   625*/
    
    
            for (int a = 0; a <=1000000 ; a++) {
                //求a的平方
                int num=a*a;
                if (num%10==a||num%100==a||num%1000==a||num%10000==a||num%100000==a||num%1000000==a){
                    System.out.println("数字本身是=》"+a+"数字的平方是=》"+num);
                }
            }

      08.字符串和数字的转换

    String str="6789"; //字符串 需要转换成数字  6789
            int result=0;
            for (int i = 0; i <str.length() ; i++) {
              result=result*10+str.charAt(i)-'0';
            }
            System.out.println(result);

      09.任意进制之间的转换

     String num="200110102"; // 3进制的数字转换成5进制的
           int result=0;
            for (int i = 0; i <num.length() ; i++) {
                char c=num.charAt(i);
                result=result*3+(c-'0');
                //result=0 + (50-48) = 2
                //result=2*3 + (48-48) = 6
                //result=6*3 + (48-48) = 18
                //result=18*3 + (49-48) = 55
                //result=55*3 + (49-48) = 166
                //result=166*3 + (48-48) = 498
                //result=498*3 + (49-48) = 1495
                //result=1495*3 + (48-48) = 4485
                //result=4485*3 + (50-48) = 13457
            }
            System.out.println(result);  //十进制  13457
            String str="";
            while (true){
                if (result==0) break;
                    str+=result%5;
                    result=result/5;
            }
            System.out.println(str);
        }
  • 相关阅读:
    trie树
    单调队列
    网络流24题——试题库问题
    费用流的简单应用
    Manacher算法
    KMP算法
    网络流之最小费用最大流
    网络流之二分图匹配【转】
    网络流之最大流
    矩阵快速幂优化菲波那切数列
  • 原文地址:https://www.cnblogs.com/wang2386033566/p/9323075.html
Copyright © 2020-2023  润新知