判断两个字符串是否互为变形词
作者:互联网
1 package code; 2 3 import java.util.Scanner; 4 5 /*20190730判断两个字符串是否互为变形词 6 * 输入:A B 两个字符串 7 * 输出:true 或者 false 8 * 思路:使用遍历法,先统计A中各元素的数量,将出现的字符和字符的次数 9 * 保存在map[0:255], 然后再遍历B,如果遍历到了 某个字符, 10 * 则使该元素出现的次数减1,如果减少之后的值为负,则返回false 11 * 遍历完了没出现负数,则返回true 12 * 13 * 定义域:A与B长度不相等,或者其中一个数组为空 14 * 15 * */ 16 public class Problem_01_IsDeformation { 17 18 public static boolean isDeformation(String str1, String str2) { 19 if (str1 == null || str2 == null || str1.length() != str2.length()) 20 { 21 return false; 22 } 23 char[] chars1 = str1.toCharArray(); 24 char[] chars2 = str2.toCharArray(); 25 int[] map = new int [256]; //申请一个长度为256的空数组 26 for (int i = 0; i<chars1.length; i++) { 27 map[chars1[i]]++; //map[]中,第i个元素的值的出现次数+1 28 } 29 for (int i = 0; i<chars2.length; i++) { 30 if (map[chars2[i]]-- == 0) { 31 return false; 32 } 33 } 34 return true ; 35 } 36 37 public static void main(String[] args) { 38 // TODO Auto-generated method stub 39 // Scanner sc1 = new Scanner(System.in); 40 // Scanner sc2 = new Scanner(System.in); 41 // while(sc1.hasNext()) { 42 // String str1 = sc1.next(); 43 // System.out.println("输入的第一个字符串" + str1); 44 // } 45 // while(sc2.hasNext()) { 46 // String str2 = sc2.next(); 47 // System.out.println("输入的第二个字符串" + str2); 48 // } 49 String A = "abcabcabc"; 50 String B = "bcacbaacb"; 51 System.out.println(isDeformation(A, B)); 52 53 } 54 55 }
标签:遍历,false,变形,str2,str1,互为,int,字符串 来源: https://www.cnblogs.com/nihenin/p/11271044.html