程序------>算法

一.算法:

  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);
    }
原文地址:https://www.cnblogs.com/wang2386033566/p/9323075.html