题目类型:哈希表
题目难度:简单
'a'~'z'
所以定义一个长度为26的数组,表示26个字符,遍历word1
,在对应位置的num[i]++
;word2
,在对应位置num[i]--
;num[i]
的绝对值大于3,则返回false,若都没有大于3的,就返回true。class Solution {
public boolean checkAlmostEquivalent(String word1, String word2) {
int[] num = new int[26];
for(int i = 0; i < word1.length(); i++){
char c = word1.charAt(i);
num[c-'a']++;
}
for(int i = 0; i < word2.length(); i++){
char c = word2.charAt(i);
num[c-'a']--;
}
for(int i = 0; i < num.length; i++){
if(Math.abs(num[i]) > 3) return false;
}
return true;
}
}
'0'~'9'
所以申请一个长度为10的数组,用于存放数字出现的次数,第一次遍历字符串,用来找出字符串中每个数字出现的次数;class Solution {
public boolean digitCount(String num) {
int[] arr = new int[10];
for(int i = 0; i < num.length(); i++){
char c = num.charAt(i);
String s = Character.toString(c);
arr[Integer.parseInt(s)]++;
}
for(int i = 0; i < num.length(); i++){
char c = num.charAt(i);
String s = Character.toString(c);
int a = Integer.parseInt(s);
if(a != arr[i]){
return false;
}
}
return true;
}
}
class Solution {
public int[] getLeastNumbers(int[] arr, int k) {
Arrays.sort(arr);
int[] num = new int[k];
for(int i = 0; i < k; i++){
num[i] = arr[i];
}
return num;
}
}
思路分析:
代码:
芜湖 起飞