HashSet内部使用Map保存数据,即将HashSet的数据作为Map的key值保存,这也是HashSet中元素不能重复的原因。而Map中保存key值前,会去判断当前Map中是否含有该key对象,内部是先通过key的hashCode,确定有相同的hashCode之后,再通过equals方法判断是否相同。
**向上取整方法 Math.ceil()
**
// write your code here
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
if(n==0){
break;
}
int count = 0;
while(n>=2){
n = (int)Math.ceil((double)n/3);
count++;
}
System.out.println(count);
}
}
}
import java.util.*;
public class Solution {
/**
* 正数数组中的最小不可组成和
* 输入:正数数组arr
* 返回:正数数组中的最小不可组成和
*/
public int getFirstUnFormedNum(int[] arr) {
int min = Integer.MAX_VALUE;
int max = 0;
for (int i = 0; i < arr.length; i++) {
max += arr[i];
min = Math.min(min, arr[i]);
}
boolean res[] = new boolean[max + 1];
res[0] = true;
for (int i = 0; i < arr.length; i++) {
for (int j = max; j >= arr[i]; j--) {
res[j] = res[j - arr[i]] || res[j];
}
}
for (int i = min; i < res.length; i++) {
if (!res[i])
return i;
}
return max + 1;
}
}
getDeclaredMethods
获取的是类自身声明的方法,包含public、protected和private方法。
getMethods
获取的是类的所有public方法,包括自身的和从父类、接口继承的。
方法中修改字符串的值,并不影响字符串最初的值,只是创建一个临时变量,临时变量指向新的空间。
用三目运算符使代码更加简洁明了。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner= new Scanner(System.in);
while(scanner.hasNext()){
String str = scanner.nextLine();
StringBuilder sb = new StringBuilder();
for(int i =0;i<str.length();i++){
if(str.charAt(i)==' '){
sb.append(' ');
}else{
sb.append((char)(str.charAt(i)>'E'?str.charAt(i)-5:str.charAt(i)+21));
}
}
System.out.println(sb);
}
}
}
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
int count = 0;
for(int i =2;i<Math.sqrt(n);i++){
if(n%i==0){
while(n%i==0){
n=n/i;
}
count++;
}
}
if(n!=1){
count++;
}
System.out.println(count);
}
}
}