• LeetCode 面试题 01.02. 判定是否互为字符重排


    我的LeetCode:https://leetcode-cn.com/u/ituring/

    我的LeetCode刷题源码[GitHub]:https://github.com/izhoujie/Algorithmcii

    LeetCode 面试题 01.02. 判定是否互为字符重排

    题目

    给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

    示例 1:

    输入: s1 = "abc", s2 = "bca"
    输出: true 
    

    示例 2:

    输入: s1 = "abc", s2 = "bad"
    输出: false
    

    说明:

    • 0 <= len(s1) <= 100
    • 0 <= len(s2) <= 100

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/check-permutation-lcci
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路

    思路1-字符转int,用数组统计

    将字符转为int,用数组统计,前者++后者--;
    最后对数组遍历,若全为0则说明可重排;

    算法复杂度:

    • 时间复杂度: $ {color{Magenta}{Omicronleft(n ight)}} $
    • 空间复杂度: $ {color{Magenta}{Omicronleft(1 ight)}} $

    算法源码示例

    package leetcode;
    
    /**
     * @author ZhouJie
     * @date 2020年5月12日 上午11:11:24 
     * @Description: 面试题 01.02. 判定是否互为字符重排
     *
     */
    public class LeetCode_Satine_01_02 {
    
    }
    
    class Solution_Satine_01_02 {
    	/**
    	 * @author: ZhouJie
    	 * @date: 2020年5月12日 上午11:11:56 
    	 * @param: @param s1
    	 * @param: @param s2
    	 * @param: @return
    	 * @return: boolean
    	 * @Description: 1-转ascii为int数组统计;
    	 *
    	 */
    	public boolean CheckPermutation_1(String s1, String s2) {
    		if (s1.length() != s2.length()) {
    			return false;
    		}
    		int[] ascii = new int[256];
    		for (int i = 0; i < s1.length(); i++) {
    			// 统计先加后减
    			ascii[s1.charAt(i)]++;
    			ascii[s2.charAt(i)]--;
    		}
    		// 只要有非0的则不可重排转换
    		for (int val : ascii) {
    			if (val > 0) {
    				return false;
    			}
    		}
    		return true;
    	}
    }
    
    
  • 相关阅读:
    python flask 环境安装
    pymongo的说明,挺详细的
    Mysql加锁过程详解
    MySQL Group Replication 介绍
    Linux 下方便的ssh非交互工具sshpass的安装与使用
    我要拿Offer之AQS条件队列及中断机制
    ThreadLocal解析
    AQS源码分析总结
    动手实现一个同步器(AQS)
    java线程池解析
  • 原文地址:https://www.cnblogs.com/izhoujie/p/12877124.html
Copyright © 2020-2023  润新知