我来为你讲解“Java日常练习题,每天进步一点点(17)”的攻略。
首先,这个练习题共有两个小问题,我们分开来看。
问题一
要求
给定一个仅包含小写字母的字符串,去除字符串中重复的字符,使得每个字符都只出现一次。保证结果字符串中的字符在原字符串中出现顺序不变。例如,给定 "abadbc" ,返回 "abdc" 。
思路
首先我们需要字符串中每个字符只出现一次,因此我们可以使用 Set 去重。同时,我们需要保证返回的字符串中的字符顺序与原字符串中一致,因此我们可以使用 LinkedHashSet 存储字符,因为它是有序的 Set 。
代码示例
public String removeDuplicates(String s) {
LinkedHashSet<Character> set = new LinkedHashSet<>();
for (char c : s.toCharArray()) {
set.add(c);
}
StringBuilder sb = new StringBuilder();
for (char c : set) {
sb.append(c);
}
return sb.toString();
}
问题二
要求
给定两个数组,编写一个函数来计算它们的交集。例如,给定 nums1 = [1,2,2,1] , nums2 = [2,2] , 返回 [2] 。
思路
我们可以使用 HashSet 分别存储两个数组中的元素,然后遍历其中一个数组,在另一个数组中查找是否存在当前元素,如果存在则加入结果集合中。
代码示例
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for (int num : nums1) {
set1.add(num);
}
for (int num : nums2) {
set2.add(num);
}
List<Integer> list = new ArrayList<>();
for (int num : set1) {
if (set2.contains(num)) {
list.add(num);
}
}
int[] result = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
总结:
以上是“Java日常练习题,每天进步一点点(17)”的完整攻略,其中包含了两个小问题的思路和代码示例。通过这些题目的练习,可以帮助读者们巩固各种语法,并且切实提高编码能力和思考问题的能力。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java日常练习题,每天进步一点点(17) - Python技术站