zoukankan      html  css  js  c++  java
  • 字符串问题----判断两个字符串是否互为变形词

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

      

      给定两个字符串 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;
        }
    }

      

  • 相关阅读:
    让unidac支持加密的sqlite
    hook api 保护进程
    Delphi实现网页采集
    UNIDAC
    Delphi的视频捕获组件
    删除程序自身
    一种简单的自校验的注册码生成方案以及暗桩方法
    SQL server表字段信息说明
    淘宝API开发(一)简单介绍淘宝API功能接口作用
    淘宝API开发(二)淘宝API接口功能测试
  • 原文地址:https://www.cnblogs.com/Demrystv/p/9478627.html
Copyright © 2011-2022 走看看