两学一做夜校网站,运维管理平台,网站扁平结构,网站建设运营规划题目#xff1a;解一#xff1a;获取两个字符串#xff0c;设置两个整型的计“值”器#xff0c;将两个字符串转成对应的字符数组#xff0c;for循坏分别遍历两个字符数组#xff0c;将数组中元素对应的ASCII码值赋给计“值”器#xff0c;这样就通过两个计“值”器进行…题目解一获取两个字符串设置两个整型的计“值”器将两个字符串转成对应的字符数组for循坏分别遍历两个字符数组将数组中元素对应的ASCII码值赋给计“值”器这样就通过两个计“值”器进行做差取绝对值abs方法再转成字符型就能得出最后的结果。注个人感觉这种解法确实是非常快捷、高效。但此解法只适用与一个字符不同如果是多个不同如ac与bb的话这两个的ASCII码值也相同所以可能导致最后结果出错。不管怎么说这种思路还是非常值得学习。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan new Scanner(System.in); String str1 scan.next(); String str2 scan.next(); int sum1 0; int sum2 0; char[] chars1 str1.toCharArray(); char[] chars2 str2.toCharArray(); for (int i 0; i chars1.length; i) { sum1 chars1[i]; } for (int i 0; i chars2.length; i) { sum2 chars2[i]; } System.out.println((char)(Math.abs(sum1 - sum2))); scan.close(); } }解二该代码利用异或运算的特性核心原理异或运算的“同归于尽”的特性。规则1、相同数值异或结果为0比如8^80、a^a02、数值与0异或结果为自身比如0^88、0^aa3、异或满足交换律和结合律顺序不影响最终结果。因此若一个字符出现偶数次异或后会相互抵消结果为 0只有出现奇数次的字符最终会保留在结果中。该代码中读取输入的两个字符串合并后所有字符中只有 1 个字符出现奇数次找出这个唯一出现奇数次的字符并将其输出。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String st sc.next(); String st2 st sc.next(); int temp 0; for (int i 0; i st2.length(); i) { temp temp ^ st2.charAt(i); } System.out.println((char)temp); } }解三获取两个字符串并转成字符数组分别将字符数组的元素递给hashmap判断哪个map的长度更短方便调用viewDiff函数。在viewDiff函数里进行判断如果map2里不包含map1里的元素或map2的元素的次数不等于map1该元素的次数则输出该字符。import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); MapCharacter, Integer map new HashMap(); MapCharacter, Integer map2 new HashMap(); char[] arr scanner.next().toCharArray(); char[] arr2 scanner.next().toCharArray(); for (int i 0; i arr.length; i) { char a arr[i]; map.put(a, map.getOrDefault(a, 0) 1); } for (int i 0; i arr2.length; i) { char a arr2[i]; map2.put(a, map2.getOrDefault(a, 0) 1); } if (map2.size() map.size()) { viewDiff(map,map2); } else { viewDiff(map2,map); } } /** * 识别差异字符串 * param map1 长字符串 * param map2 短字符串 */ private static void viewDiff(MapCharacter,Integer map1,MapCharacter,Integer map2){ for (Map.EntryCharacter, Integer entry : map1.entrySet()) { char a entry.getKey(); Integer aValue entry.getValue(); if (!map2.containsKey(a) || map2.get(a) ! aValue) { System.out.println(a); return; } } } }解四获取两个字符串如果str比str1长度长则交换两者确保str是较短的字符串。双重循坏遍历较长字符串的每个字符与较短字符串的每个字符进行对比若字符相同将两个数组中对应的位置标记为0表示重复。最后遍历较长字符数组因为重复的元素对应的已经标为0数组中不为0的则意味着该字符是不同的将其输出。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String str sc.next(); String str1 sc.next(); if (str.length()str1.length()) { String temp str; str str1; str1 temp; } char[] c1 str1.toCharArray(); char[] c str.toCharArray(); for (int i 0; i c1.length; i) { for (int j 0; j c.length; j) { if (c1[i] c[j]) { c1[i]0; c [j]0; } } } for (int i 0; i c1.length; i) { if (c1[i]!0) { System.out.println(c1[i]); } } sc.close(); } }解五获取两个字符串将str1变成较长的字符串。调用xc函数。在xc函数中将字符串存到对应的map中对比两个map中相同键的数值差异将map中“独有的键”或“键对应的数值多于map2的部分”拼接成字符串ss是s1中去除与s2相同字符后剩余的部分最后返回s打印输出。import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); String str1scanner.nextLine(); String str2scanner.nextLine(); if(str1.length()str2.length()) { String t str1; str1str2; str2t; } System.out.println(xc(str1, str2)); } public static String xc(String str1,String str2) { String s; MapCharacter, Integer map new HashMap(); MapCharacter, Integer map2 new HashMap(); for(int i0;istr1.length();i) { if(map.containsKey(str1.charAt(i))) { map.put(str1.charAt(i), map.get(str1.charAt(i))1); }else { map.put(str1.charAt(i), 1); } } for(int i0;istr2.length();i) { if(map2.containsKey(str2.charAt(i))) { map2.put(str2.charAt(i), map2.get(str2.charAt(i))1); }else { map2.put(str2.charAt(i), 1); } } Set keySet map.keySet(); Iterator it keySet.iterator(); while (it.hasNext()) { Object keyit.next(); Integer valueObjectmap.get(key); if(map2.get(key)null) { while((valueObject--)0) { sskey; } }else { Integer valueObject2map2.get(key); int avalueObject-valueObject2; while((a--)0) { sskey; } } } return s; } }解六获取字符串将t字符串变成较长字符串设立一个长度为26的数组遍历s字符串将各元素减去‘a’的ASCII码值作为下标存到数组中并加一操作遍历t字符串先将对应元素减去‘a’的ASCII码值下标对应的值加一判断是否小于0是的话则该下标对应的原字符则为不同的字符打印输出。import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String s sc.next(); String t sc.next(); int[] count new int[26]; if (s.length() t.length()) { String temp s; s t; t temp; } for (int i 0; i s.length(); i) { count[s.charAt(i) - a]; } for (int j 0; j t.length(); j) { if (--count[t.charAt(j) - a] 0) { System.out.println(t.charAt(j)); break; } } } }解七自己的解法获取字符串将字符串内容存到各自的map中创建一个arraylist动态数组增强for循坏遍历hashmap1如果map2中有map1对应的字符且次数相同则将该字符存到动态数组中for循坏删除map1和map2中该字符的“键”。最后判断哪个map长度为1将不同的字符打印输出。import java.util.*; public class Main { public static void main(String[] args) { Scanner scan new Scanner(System.in); Scanner scanner new Scanner(System.in);//从键盘输入两个字符串 String x1 scanner.nextLine(); String x2 scanner.nextLine(); HashMapCharacter,Integer hashMap1 new HashMap();//创立两个hashmap存放 HashMapCharacter,Integer hashMap2 new HashMap(); //具体存入 for (int i 0;ix1.length();i){ char a x1.charAt(i); if (hashMap1.containsKey(a)){ hashMap1.put(a,hashMap1.get(a)1); }else { hashMap1.put(a,1); } } for (int j 0;jx2.length();j){ char b x2.charAt(j); if (hashMap2.containsKey(b)){ hashMap2.put(b,hashMap2.get(b)1); }else { hashMap2.put(b,1); } } SetMap.EntryCharacter,Integer entrySet hashMap1.entrySet(); ArrayListCharacter arrayList new ArrayList();//创建一个arraylist动态数组用于存放相同的字符 for (Map.EntryCharacter,Integer entry:entrySet){//增强for循坏遍历hashmap1 if (hashMap2.containsKey(entry.getKey()) hashMap2.get(entry.getKey()) entry.getValue()){//如果字符串2有1中的字符且次数相同 arrayList.add(entry.getKey());//则将对应的字符存到arraylist中 } } for (Character x:arrayList){//增强for循坏删除hashmap1、2中相同的字符 hashMap1.remove(x); hashMap2.remove(x); } //判断哪个里有多余的字符打印输出 if (hashMap1.size()1){ for (Character key:hashMap1.keySet()){ System.out.println(key); } } else if (hashMap2.size()1){ for (Character key:hashMap2.keySet()){ System.out.println(key); } } scan.close(); } }