判断两个字符串是否互为变形词-日常算法rank

* 题目:
* 给定两个字符串str1,str2,如果str1和str2中出现的字符种类一样,而且每种字符出现的次数也一样
* 那么这两个字符串就互为变形词。实现一个函数判断。
* 示例:
* str1="123",str2="312",返回true
* str1="1231",str2="123",返回false
解题思路:
1、如果两个字符串长度不相等,一定不是变形词。
2、字符编码值0~255之间,共256个。可以使用一个长度为256的整型数组arr[],比如字符'a',编码值就是97,
arr[97]=5,表示字符编码值97的字符a出现了5次。
3、第一次遍历字符str1,统计出现次数。将各个字符的出现次数在arr数组里面存着。
4、第二次遍历str2,如果arr这个字符等于0,那就返回false,否则--。
 public boolean isDeformation(String str1, String str2) {
        //特殊情况处理
        if(str1 == null || str2 == null || str1.length() != str2.length()){
            return false;
        }
        //开辟存储256位字符数组
        int[] arr = new int[256];
        char[] chas1 = str1.toCharArray();
        char[] chas2 = str2.toCharArray();
        for (char c : chas1) {
            arr[c]++;
        }
        for (char c : chas2) {
            if (arr[c] == 0) {
                return false;
            } else {
                arr[c]--;
            }
        }
        return true;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值