Java算法解题小记
Java算法解题速记
- 1. 返回两个整数中的最小值
- 2. 返回三个整数中的最小值
- 3. 将小数以百分号的形式输出
- 4. 检查字符串是否为纯数字
- 5. 检查某个变量是否为a-z或A-Z的字符
- 6. 判断一个数是否为素数
- 7. 求两个数的最大公约数和最小公倍数
- 8. !scanner.hasNext(".")的注意点
- 9. 比较字符串是否相等时忽略大小写
1. 返回两个整数中的最小值
int min2(int a, int b){
return a < b ? a : b;
}
2. 返回三个整数中的最小值
int min3(int a, int b, int c){
int min2;
return c < (min2=a < b ? a : b) ? a : min2;
}
3. 将小数以百分号的形式输出
//保留两位小数并自动进行四舍五入操作
DecimalFormat num = new DecimalFormat(".00%");
double a = 0.127863;
System.out.println(num.format(a));
输出结果:
12.79%
4. 检查字符串是否为纯数字
String a = "314321";
String b = "X987";
System.out.println(a.matches("[0-9]+"));
//[0-9]相当于\d,因此上式也可以写为:"\\d+"
System.out.println(b.matches("[0-9]+"));
输出结果:
true
false
5. 检查某个变量是否为a-z或A-Z的字符
String str = "x";
String str1 = "2";
System.out.println(str.matches("[A-z]"));
System.out.println(str1.matches("[A-z]"));
输出结果:
true
false
6. 判断一个数是否为素数
判断整数n是否为素数时只需循环到sqrt(n)即可,因为n必有一个小于或等于其平方根的因数,那么验证素数时就只需要验证到其平方根即可
7. 求两个数的最大公约数和最小公倍数
使用辗转相除法求两个数的最大公约数:
public static int getGCD(int a, int b) {
//确保a比b大
if (a < b){
int temp = a;
a = b;
b = temp;
}
if (a % b == 0) {
return b;
}else {
//递归运算
return getGCD(b, a % b);
}
}
两个数的最小公倍数等于两数的乘积除以两数的最大公约数:
int a = 4, b = 6;
System.out.println("最小公倍数:"+a*b/getGCD(a,b));
8. !scanner.hasNext(".")的注意点
有题目要求以一个英文句点".“为标志结束输入的时候,不能使用 while (!scanner.hasNext(”."))来进行输入的判断,因为正则表达式中的"."表示用于查找单个字符(除了换行和行结束符),否则当输入单个字符时while的条件仍然不成立从而导致结果错误。可使用如下方式代替:
while (true){
temp = scanner.next();
if (!".".equals(temp))
arr.add(temp);
else
break;
}
9. 比较字符串是否相等时忽略大小写
比较字符串是否相等时忽略大小写可使用equalsIgnoreCase
方法:
String str1 = "HeLlo";
System.out.println(str1.equalsIgnoreCase("hello"));
输出结果:
true