Task01
问题
给定一个字符串数组 words 和一个字符串 chars. 如果一个字符串能被 chars 里面的字符组成,那么这个字符串就是"好"的(chars里面每个字符只能使用一次)。
求:words 里面所有好的字符串的字符总个数。
比如:
words = [“cat”, “bt”, “hat”, “tree”]
chars = “atach”
好的字符串有 “cat”, “hat”, 3 + 3 = 6.
输出:6
代码
package ds.day06.Task01;
public class Task01 {
public static void main(String[] args) {
String[] words = new String[]{"cat", "bt", "hat", "tree"};
String chars = "atach";
int allNmber = 0;
for (int i = 0; i < words.length; i++) {
String chars1 = chars;
char[] words1 = words[i].toCharArray();
int j;
for (j = 0; j < words1.length; j++) {
if (chars1.indexOf(words1[j]) == -1) {
break;
} else {
chars1.replace(words1[j],'#');
}
}
if (j == words1.length) allNmber = allNmber + words1.length;
}
System.out.println(allNmber);
}
}
结果
Task02
问题
“aababcabcdabcde”,获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
代码
package ds.day06.Task02;
import java.util.HashMap;
import java.util.Map;
public class Task02 {
public static void main(String[] args) {
String str = "aababcabcdabcde";
char[] chr = str.toCharArray();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < chr.length; i++) {
if (map.containsKey(chr[i])) {
map.put(chr[i], map.get(chr[i]) + 1);
} else {
map.put(chr[i], 1);
}
}
System.out.println(map);
}
}
结果
Task03
问题
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数, 返回它们的索引。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
比如:nums = [2, 7, 11, 15], target = 9.
因为 nums[0] + nums[1] = 2 + 7 = 9. 所以返回 [0, 1].
代码
package ds.day06.Task03;
import java.util.HashMap;
public class Task03 {
public static void main(String[] args) {
HashMap<Integer, Integer> map = new HashMap<>();
map.put(2, 0);
map.put(7, 1);
map.put(11, 2);
map.put(15, 3);
int[] nums = {2, 7, 11, 15};
int tag = 9;
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(tag - nums[i])) {
if (i != map.get(tag - nums[i])) {
System.out.println("[" + i + " " + map.get(tag - nums[i]) + "]");
break;
}
}
}
}
}