标签:|| 次数 ram str 数组 format 个数 出现 new
给定两个字符串 str1 和str2 ,如果两个字符串中出现的字符种类一样,次数也一样,则互为变形词,实现一个函数判断两个字符串是否互为变形词。例如 str1=“123”,str2=“132”,true; str1=“123”,str2=“1332”,false;
【解题思路】
1. 首先比较两个字符串的长度,长度不同肯定是false。
2. 如果长度相同,新建一个数组,用以存储每个字符出现次数。
3. 初始值都是为0,在str1 中出现一次就加1,在str2 中出现一次就减1,最后遍历完str2没有出现负值,就返回true。
package com.test; /** * Created by Demrystv. */ public class IsDeformation { /** * 如果字符的类型很多,可以采用哈希表代替长度为256的整型数组, * 字符串的种类为 M,字符串的长度为 N,那么 时间复杂度是 O(N), 空间复杂度是O(M) * @param str1 * @param str2 * @return */ public boolean isDeformation(String str1, String str2){ if (str1 == null || str2 == null || str1.length() != str2.length()){ return false; } char[] chars1 = str1.toCharArray(); char[] chars2 = str2.toCharArray(); int[] map = new int[256]; for (int i = 0; i < chars1.length; i++) { map[chars1[i]]++; } for (int i = 0; i < chars2.length; i++) { if (map[chars2[i]]-- == 0){ return false; } } return true; } }
标签:|| 次数 ram str 数组 format 个数 出现 new
原文地址:https://www.cnblogs.com/Demrystv/p/9478627.html