码迷,mamicode.com
首页 > 其他好文 > 详细

字符串问题----判断两个字符串是否互为变形词

时间:2018-08-14 23:32:08      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:||   次数   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!