Anagrams 变位词 @LeetCode

Leetcode 49. Group Anagrams--将变位词组合在一起-把相同字母异序词 分组 Leetcode 49. Group Anagrams--将变位词组合在一起-把相同字母异序词 分组Given an array of strings, group anagrams together. 阅读详情

思路:

建Hashtable,用排序过的string作为key,它的anagram作为ArrayList


这道题之前用暴力写的O(N^2)的TLE了,改用Hashtable来写

题目的意思是给一个String数组,找出其中由相同字母组成的单词。
例如:
S = ["abc", "bca", "bac", "bbb", "bbca", "abcb"]
答案为:
["abc", "bca", "bac", "bbca", "abcb"]
只有"bbb"没有相同字母组成的单词。


package Level3;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.Set;

/**
 * Anagrams 
 * Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case. 
 *
 */
public class S49 {

	public static void main(String[] args) {

	}

	public ArrayList<String> anagrams(String[] strs) {
		ArrayList<String> ret = new ArrayList<String>();
		
		// 用排序过的string作为key,它的anagram作为ArrayList
		Hashtable<String, ArrayList<String>> ht = new Hashtable<String, ArrayList<String>>();
		
		for(int i=0; i<strs.length; i++){
			String sorted = sorted(strs[i]);
			ArrayList<String> val = ht.get(sorted);
			if(val != null){
				val.add(strs[i]);
			}else{
				val = new ArrayList<String>();
				val.add(strs[i]);
				ht.put(sorted, val);
			}
		}
		
		// Hashtable的循环方法 keySet 
		Set<String> set = ht.keySet();
		
		// 把所有anagram添加到ret中
		for(String s : set){
			ArrayList<String> val = ht.get(s);
			if(val.size() > 1){
				ret.addAll(val);
			}
		}
		
		return ret;
    }
	
	public String sorted(String a){
		char[] achar = a.toCharArray();
		Arrays.sort(achar);
		return new String(achar);
	}
	
}




注意Hashtable中的containsKey和如何遍历Hashtable的方法

import java.util.*;

public class Solution {
    
    public List<String> anagrams(String[] strs) {
        Hashtable<String, ArrayList<String>> ht = new Hashtable<String, ArrayList<String>>();
    
        for(int i=0; i<strs.length; i++) {
            String s = strs[i];
            char[] ss = s.toCharArray();
            Arrays.sort(ss);
            String sorted = new String(ss);
    
            if(ht.containsKey(sorted)) {
                ArrayList<String> al = ht.get(sorted);
                al.add(s);
            } else {
                ArrayList<String> al = new ArrayList<String>();
                al.add(s);
                ht.put(sorted, al);
            }
        }
    
        Iterator<Map.Entry<String, ArrayList<String>>> it = ht.entrySet().iterator();
        ArrayList<String> ret = new ArrayList<String>();
        while(it.hasNext()) {
            Map.Entry<String, ArrayList<String>> entry = it.next();
            ArrayList<String> al = entry.getValue();
            if(al.size() > 1) {
                ret.addAll(al);
            }
        }
    
        return ret;
    }
}





面试题 10.02. 变位词组 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。 注意:本题相对原题稍作修改 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 class Solution { public: vector<vector&l... 阅读详情

相关推荐

IEC 61851-24:2023 电动汽车导电充电系统 - 第24部分:直流电动汽车供电设备与电动汽车之间的数字通信,用于控制直流充电 - 完整英文电子版(110页)

IEC 61851-24:2023 与 IEC 61851-23 共同适用于直流电动车供电设备与电动道路车辆(EV)之间的数字通信,用于控制导电直流电力传输,额定电源电压最高可达1000伏交流电或最高1500伏直流电,额定输出电压最高可达1500伏直流电。

LeetCode-变位词组

题目描述 输入:字符串数组 输出:变位词组合在一起的数组 算法思想 方法一:排序 对字符串数组中的每个字符串排序,当排序结果相同时,则说明这两个字符串是变位词。如:abc →abc,bac→abc 方法二:计数 把排序换成对字符串中字符计数,计数相同的字符串为变位词。如:abc→a1b1c1,bac→a1b1c1 代码实现 方法一: class Solution { public List<List<String>> groupAnag..

sinat_35665358的博客 347

Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)

Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)

LeetCode字符串中的所有变位词

由于每次在字符串s中寻找的都是长度为p的某些字符,所以可以想到滑动窗口。定义两个数组sc,pc,大小都是26,当遇到某个字母时就将其对应数组值加1。sc存储在当前窗口下的某些字符对应的字母个数,pc存储字符串p的相应字母个数,pc数组不变,作为后续比较的基础

liyatjj的博客 795

北京大学数字普惠金融指数2011年-2023年(PKU-DFIIC)

该数据集可能涵盖以下几个方面:一是金融服务的可达性,涉及金融服务在不同人群和不同地区的普及程度,尤其是对中小企业、农村地区和低收入群体的覆盖;二是数字金融服务的使用情况,包括电子支付、网络贷款、互联网保险、数字资产管理等,反映人们在日常生活中对数字金融服务的依赖与使用;三是普惠金融的普及程度,可能包含金融服务覆盖的人群比例、地理范围以及服务种类和使用频率;四是创新技术的应用情况,涵盖大数据、区块链、云计算、人工智能等新技术在金融服务中的应用程度及其影响;五是监管环境与政策导向,反映国家和地方政策对数字普惠金融发展的支持与监管;六是金融服务的满意度与问题,收集用户对数字金融服务的满意度评价以及服务过程中遇到的问题和挑战。 该数据集对研究机构、政策制定者和金融科技公司均具有重要价值。研究机构可借助这些数据了解数字普惠金融的发展趋势和模式,识别影响普惠金融发展的关键因素;政策制定者可依据数据内容制定针对性政策,推动金融服务均衡发展;金融科技公司则可通过分析数据优化产品设计,满足不同用户群体的需求。 此外,感兴趣的读者可通过文中提供的链接查阅详细介绍和样例数据,进一步了解数据集的构成与应用方式。该链接指向一篇博客文章,文章详细介绍了数据集的结构和内容,并可能提供样例数据供参考,帮助读者更好地理解和使用这些数据。数据集标签为“数据集”,说明它是一个经过整理和加工的原始数据集合,便于学者和研究人员在不涉及原始数据收集过程的情况下直接使用这些数据开展研究和分析,有助于缩短研究时间、提升研究效率并促进知识共享。

DataGear是一款开源免费的数据可视化分析平台,自由制作任何数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源

DataGear是一款开源免费的数据可视化分析平台,自由制作任何数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。系统主要功能包括:数据源管理、SQL工作台、数据导入/导出、项目管理、数据集管理、图表管理、看板管理、用户管理、角色管理、数据源驱动管理、图表插件管理等。

变位词组

面试题 10.02. 变位词组 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。 注意:本题相对原题稍作修改 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: ...

weixin_42161578的博客 361

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对电容式触摸传感器在金属基材上应用时易受干扰的问题,提出一种基于半数值模型的仿真分析方法,用于精确计算带状电容器在金属背景下的电容变化。研究通过构建合理的物理模型,结合电磁场理论与数值计算技术,在Matlab平台上实现代码仿真,有效克服金属环境对传感器性能的负面影响,提升其在复杂材料表面工作的稳定性和灵敏度,具有良好的工程应用前景。该方法不仅适用于基础研究,也可为实际产品中抗干扰触摸传感器的设计提供理论依据和技术支撑。; 适合人群:具备电磁场与微波技术基础知识及Matlab编程能力,从事传感器设计、人机交互设备开发、嵌入式系统研发等相关领域的高校研究生、科研人员和工程技术人员。; 使用场景及目标:①开展电容式触摸传感器在金属基材上的集成与优化设计;②掌握半数值建模与仿真方法在电磁传感系统中的应用;③为工业环境下高抗扰触摸器件的研发提供仿真验证手段与设计指导。; 阅读建议:此资源强调物理建模与数值仿真的紧密结合,建议读者结合电磁学原理深入理解边界条件设置、介质分布建模与电场求解过程,并动手运行Matlab代码,调试参数以观察电容响应特性,从而全面提升对传感器工作机制与仿真分析能力的掌握。

面试题 10.02. 变位词组 - leetcode(C++)

一、题目 面试题 10.02. 变位词组 二、分析 这个词呀,非常有意思。下面来记录下自己的解题思路: 其实打眼一看,这个题可以用hash来解决,于是乎,二话不说我定义了一个 unordered_map<int,vector<string>>,这个hash的key代表是:字母编码成的整数,因为字母就26个,一个int可以表示32位,这样一个int就可以表达单词中的字母有无,有则该位为1,无则加勉(无则为0啊啊啊);hash的value代表拥用相同字母的这些单词的数组。 ["eat

wch0lalala的博客 390

【顶级EI复现】基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法(Simulink仿真实现)

内容概要:本文提出了一种基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法,旨在实现高效、高可靠性的电力转换。该方法通过建立精确的电路数学模型,结合KKT最优性条件进行分段解析优化,有效协调零电压/零电流软开关实现条件与功率器件电压电流应力之间的矛盾,在确保宽范围软开关的前提下显著降低器件的电气应力,从而提升系统效率与寿命。文中详细阐述了控制策略的理论推导过程,并在Simulink平台上构建了完整的闭环仿真模型,验证了该方法在动态响应速度、转换效率优化及器件应力抑制等方面的优异性能,是对高水平EI期刊研究成果的高质量复现; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员,以及从事DC-DC变换器控制算法开发的工程师;适用于具备扎实电路拓扑分析能力与现代控制理论基础的专业技术人员; 使用场景及目标:①深入理解双有源桥(DAB)变换器的工作机理与关键控制挑战;②掌握将非线性优化问题转化为KKT条件求解的方法及其在电力电子系统中的实际应用;③学习如何通过分段解析策略实现多目标(软开关与低应力)协同优化控制;④复现并拓展EI级论文中的先进控制算法,支撑科研创新与工程实践; 阅读建议:建议读者结合提供的Simulink仿真模型,逐步跟进理论推导与控制逻辑实现过程,重点关注KKT条件的引入方式、边界约束处理及闭环控制器设计细节,同时可尝试将该优化思想迁移至其他隔离型DC-DC变换器拓扑中进行对比验证,以深化对先进优化控制策略的理解与应用能力。

无刷直流电机(BLDCM)转速电流双闭环控制、三相桥式星型全控电机研究(Simulink仿真实现)

内容概要:本文围绕无刷直流电机(BLDCM)的转速电流双闭环控制系统展开深入研究,重点基于Matlab/Simulink平台构建三相桥式星型全控电路的高精度仿真模型,实现对电机运行状态的精确控制。研究系统性地对比了传统PID控制与模糊PID控制策略在动态响应速度、抗干扰能力、稳态精度及鲁棒性等方面的性能差异,深入剖析电流环与转速环的协同作用机制。同时,文章进一步引入无位置传感器控制技术与滑模观测器(SMO),有效解决了机械传感器带来的成本与可靠性问题,提升了系统的集成度与工程实用性。所提供的多个仿真模型(含模糊神经网络PID等高级控制策略)为控制算法的验证与优化提供了可复现的技术路径,仿真结果可为电机驱动系统的工业设计与科研创新提供坚实的理论依据和技术支撑。; 适合人群:自动化、电气工程、电力电子与电机控制等相关专业的本科生、研究生,以及从事电机驱动系统研发、新能源汽车、工业自动化等领域工作的工程师和技术人员。; 使用场景及目标:①掌握无刷直流电机双闭环控制系统的建模、仿真与调试全流程;②深入理解并实践传统PID与模糊PID控制器的设计原理与参数整定方法;③探究无位置传感器控制与滑模观测器等先进估测技术的实现机理;④为毕业设计、科研课题、课程项目或工业级电机控制器开发提供可直接借鉴的仿真基础与解决方案。; 阅读建议:建议读者结合Matlab/Simulink环境进行动手实践,按照文档指引逐步搭建模型,重点观察不同控制策略下的系统响应曲线,深入分析控制参数变化对性能的影响,并鼓励在此基础上拓展研究如负载突变、参数摄动等复杂工况下的控制策略优化。

leetcode 字符串中的变位词

题目链接 思路:滑动窗口 分析:从s2中查找s1的位置,不过这里s1在s2中的字符顺序可以是乱的,但是长度肯定是一样的,那么这个长度就是滑动窗口的长度。我们用两个窗口,长度都是s1的长度,然后每次比对里面的内容是否一样。 简单说: 1.将内容装进窗口 2.比对窗口的内容是否一样 代码: class Solution { public boolean checkInclusion(String s1, String s2) { //存储s1窗口的内容 int[] s1Arr

weixin_42496727的博客 1373

【顶级EI复现】新扩展移相角下的双有源桥DC-DC 变换器优化控制策略(Simulink仿真实现)

内容概要:本文聚焦于“新扩展移相角下的双有源桥DC-DC变换器优化控制策略”的高水平EI论文复现与深化研究,系统性地实现了基于扩展移相调制(EPS)的DAB变换器控制方案,重点涵盖软开关技术的实现、器件最小应力优化及双闭环控制系统的设计。通过Simulink平台构建完整的仿真模型,验证了该控制策略在提升能量转换效率、降低功率器件电压电流应力、改善动态响应性能等方面的优越性,体现了先进控制理论与电力电子系统深度融合的技术特征。; 适合人群:电力电子、电气工程及其自动化、新能源系统控制等方向的研究生、科研人员及从事DC-DC变换器研发的工程技术人员,尤其适合具备电路拓扑分析能力与控制系统仿真基础的专业人士。; 使用场景及目标:①深入掌握双有源桥变换器的工作机理及其在电动汽车、微电网、可再生能源并网等场景中的关键技术应用;②理解并实现扩展移相调制(EPS)与软开关、最小应力优化之间的协同控制机制;③学习高水平EI期刊论文的建模规范、算法设计逻辑与仿真验证方法,提升科研实践能力;④为后续开展多模块并联、数字化控制或新型调制策略创新提供技术储备。; 阅读建议:此资源以Simulink仿真实现为核心载体,建议读者结合文档逐步搭建模型,重点关注调制信号生成、闭环控制器参数整定、软开关边界条件分析及系统性能对比,鼓励在复现基础上进行拓展性研究,如引入数字延迟补偿、优化启动策略或多模式切换逻辑,以深化对DAB系统动态特性的理解。

leetcode 438 找出字符串中所有的变位词

给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。 字符串只包含小写英文字母,并且字符串s和p的长度都不超过 20100。 说明: 字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。 示例1:输入: s: "cbaebabacd" p: "abc" 输出: [0, 6] 解释: 起始索引...

斜月&三星 452

三相PWM整流器双闭环控制仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink仿真实现的三相PWM整流器双闭环控制仿真模型,重点阐述了电流内环与电压外环协同控制的原理与实现方法。通过构建完整的控制系统模型,深入解析PWM整流器的工作机制、动态响应特性及系统稳定性控制策略,帮助读者掌握电力电子系统中典型控制结构的设计思路。文章不仅提供可操作的仿真建模流程,还结合科研实际需求,配套丰富的学习资源链接,涵盖智能优化、机器学习、图像处理、路径规划、通信与信号处理、电力系统管理等多个技术领域的仿真案例,具有较强的实践指导意义。; 适合人群:适用于电气工程、自动化、电力电子及相关专业的本科生、研究生、科研人员,以及具备一定MATLAB/Simulink基础并从事电力电子系统仿真与控制研究的专业技术人员。; 使用场景及目标:①深入理解三相PWM整流器的工作原理及双闭环控制策略的设计与调试;②独立搭建并优化电力电子系统的Simulink仿真模型,服务于课程设计、毕业设计或科研项目;③借助配套资源拓展至多学科交叉领域的仿真研究与算法应用。; 阅读建议:建议按照文档结构结合网盘提供的仿真文件逐步实践,重点关注控制器参数整定、系统动态性能分析与仿真模块搭建,并配合相关理论学习以提升对电力电子系统控制本质的理解。

【多智能体在城市环境中的追踪】城市环境中多智能体对流氓智能体的追踪研究(Matlab代码实现)

内容概要:本文研究了城市环境中多智能体对流氓智能体的追踪问题,提出了一种基于Matlab仿真的多智能体协同追踪方法。通过构建合理的城市环境模型与智能体动力学模型,设计了高效的分布式追踪策略,使多个追踪智能体能够在存在障碍物、通信延迟等复杂约束条件下实现对目标的稳定、鲁棒追踪。文中系统阐述了算法的设计原理、系统架构及仿真实验设置,并通过大量对比实验验证了所提方法在追踪成功率、路径最优性、避障能力以及抗通信干扰等方面的优越性能,尤其强调了协同机制与局部决策在提升整体追踪效能中的关键作用。; 适合人群:具备一定Matlab编程基础和多智能体系统理论知识,从事智能交通、无人机协同、智能监控、自动化控制等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于城市环境下的多智能体协同追踪系统设计与仿真验证;②为智能安防巡检、无人驾驶车队监控、反恐追捕等实际应用场景提供算法原型与技术参考; 阅读建议:建议读者结合Matlab代码实现部分进行逐段调试与参数调优,深入理解追踪算法中通信拓扑、路径规划、避障策略与协同决策的实现细节,并尝试在不同地图布局、障碍密度和通信条件的场景下复现实验,以全面掌握算法的适应性与鲁棒性。

仿真+课设Multisim直流可调稳压电源(0-15V)仿真设计基于LM317+LM337【仿真+课程报告】

内容概要:本文详细介绍了一种基于LM317(正压调节)和LM337(负压调节)芯片的Multisim直流可调稳压电源仿真设计方案,输出电压范围为0-15V,具备完整的电路仿真模型与课程设计报告。设计涵盖线性稳压电源的核心原理,包括电压调节机制、元件参数配置、双极性电源构建及仿真测试流程,突出理论与实践结合。文档还附带丰富的扩展资源,如三相PWM整流器、函数信号发生器等仿真项目,并提供百度网盘链接用于获取全套资料,适用于电子类课程设计与自主学习。整体内容系统性强,注重仿真操作指导与工程实践能力培养。; 适合人群:电子信息工程、自动化、电气工程及其相关专业的本科生、专科生,以及正在进行模拟电子技术课程设计或毕业设计的学生。; 使用场景及目标:①深入理解线性稳压电源的工作原理与设计方法;②掌握Multisim软件在电路仿真中的实际应用;③完成基于LM317/LM337的可调稳压电源课程设计任务;④提升模拟电路系统的设计、仿真与分析综合能力; 阅读建议:建议结合Multisim软件同步实践,按照文档电路图逐步搭建仿真模型,重点关注电压调节电路的实现细节与参数设置,并参考所提供的其他仿真资源拓展知识广度,强化工程思维训练。

云计算第一次作业aaaaaaa

云计算第一次作业aaaaaaa

上一篇: Java中如何遍历Hashtable
下一篇: Pow(x, n) 指数 @LeetCode
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值