最近有点懒,一天只刷3题
有效的字母异位词
- 方法一:数组模拟哈希表
class Solution {
public boolean isAnagram(String s, String t) {
int st[] = new int[26]; // 用st[]来存储每个单词出现的次数
for(int c : s.toCharArray()) {
st[c - 'a'] ++;
}
for(int c : t.toCharArray()) {
st[c - 'a'] --;
}
for(int i : st) {
if(i != 0) return false;
}
return true;
}
}
- 方法二:模拟
class Solution {
public boolean isAnagram(String s, String t) {
char[] char1 = s.toCharArray();
char[] char2 = t.toCharArray();
Arrays.sort(char1);
Arrays.sort(char2);
return Arrays.equals(char1, char2);
}
}
- 方法三:利用list
class Solution {
public boolean isAnagram(String s, String t) {
char[] char1 = s.toCharArray();
char[] char2 = t.toCharArray();
List list1 = new ArrayList();
List list2 = new ArrayList();
Arrays.sort(char1);
Arrays.sort(char2);
for (int i = 0; i < s.length(); i++) {
list1.add(char1[i]);
}
for (int i = 0; i < t.length(); i++) {
list2.add(char2[i]);
}
if (s.length() != t.length()){
return false;
}
for (int i = 0; i < s.length(); i++) {
if (list1.get(i)!=list2.get(i)){
return false;
}
}
return true;
}
}
两个数组的交集
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
int st1[] = new int[1010];
int tmp[] = new int[1010];
for(int x : nums1) {
st1[x] ++;
}
Set<Integer> set = new HashSet<>();
for(int x : nums2) {
if(st1[x] != 0) set.add(x);
}
int res[] = new int[set.size()];
int t = 0;
for (int i : set) {
res[t++] = i;
}
return res;
}
}
快乐数
递龟就很快乐
class Solution {
public boolean isHappy(int n) {
if(n < 10 && n == 1 || n < 10 && n == 7)return true;
else if(n < 10 && n != 1)return false;
else {
int res = 0;
int x = n;
while(x > 0)
{
int t = x % 10;
res += Math.pow(t,2);
x /= 10;
}
return isHappy(res);
}
}
}