标签:方法 asa 步骤 pat acea 进制 计算 描述 eal
一.算法:
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+"\t5元钱出现的次数=》"+b+"\t5角钱出现的次数=》"+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); }
标签:方法 asa 步骤 pat acea 进制 计算 描述 eal
原文地址:https://www.cnblogs.com/wang2386033566/p/9323075.html