Sorting&Searching 基于变位词的字符串数组排序 @CareerCup

算法 - 查找与内部排序 (Searching and Sorting) 本文将简要的介绍一些查找方法和排序方法,并用C++实现常用查找方法和常用排序方法。 阅读详情

两种排序结果不一样。。。

1 实现Comparator接口的compare方法,在里面先把每个string都排序一遍,然后再比较

2 用一个Hashtable<String, LinkedList<String>>的结构,String为排序后的确定的string,LL里面装着各种anagram的变种


package Sorting_Searching;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Hashtable;
import java.util.LinkedList;

import CtCILibrary.AssortedMethods;

/**
 * Write a method to sort an array of strings so that all the anagrams are next
 * to each other.
 * 
 * 译文:
 * 
 * 写一个函数对字符串数组排序,使得所有的变位词都相邻。
 * 
 */
public class S11_2 {
	public static void main(String[] args) {
		String[] array1 = { "apple", "banana", "carrot", "ele", "duck", "papel",
				"tarroc", "cudk", "eel", "lee" };
		System.out.println(AssortedMethods.stringArrayToString(array1));
		Arrays.sort(array1, new AnagramComparator());
		System.out.println(AssortedMethods.stringArrayToString(array1));
		
		String[] array2 = { "apple", "banana", "carrot", "ele", "duck", "papel",
				"tarroc", "cudk", "eel", "lee" };
		sort(array2);
		System.out.println(AssortedMethods.stringArrayToString(array2));
	}
	
	static class AnagramComparator implements Comparator<String>{

		@Override
		public int compare(String s1, String s2) {
			String sorted1 = sortChars(s1);
			String sorted2 = sortChars(s2);
			return sorted1.compareTo(sorted2);
		}
	}
	
	public static String sortChars(String s){
		char[] ch = s.toCharArray();
		Arrays.sort(ch);
		return new String(ch);
	}
	
	public static void sort(String[] array) {
		Hashtable<String, LinkedList<String>> hash = new Hashtable<String, LinkedList<String>>();
		
		// Group words by anagram
		for(String s : array){
			String key = sortChars(s);
			if(!hash.containsKey(key)){
				hash.put(key, new LinkedList<String>());
			}
			LinkedList<String> anagrams = hash.get(key);
			anagrams.push(s);
		}
		
		// Convert hash table to array
		int index = 0;
		for(String key : hash.keySet()){
			LinkedList<String> anagrams = hash.get(key);
			for(String t : anagrams){
				array[index++] = t;
			}
		}
	}
	
}


计算机视觉:暗通道去雾算法的原理及python实现 在绝大多数非天空的局部区域中,某些像素总会至少有一个颜色通道的值很低。对于一幅图像J(x),其暗通道的数学定义表示如下:其中,Ω(x)表示以x为中心的局部区域,上标c表示RGB三个通道。该公式的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波,滤波的半径由窗口大小决定。 阅读详情

相关推荐

TCP报文 Flood攻击原理与防御方式

TCP交互过程中包含SYN、SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。

qq_32044265的博客 4219

每日一题--字符串数组重排(Google推荐面试书--Cracking the Coding Interview)

题目 原文: Write a method to sort an array of strings so that all the anagrams are next to each other. 译文: 写一个函数对字符串数组排序,使得所有的变位词都相邻。 分析 变位词是什么?这我们之前提到过,就是组成字符一样但是组成顺序不一样的字符串,eg.good&amp;doog。这里我们可以利用sort...

泓源的博客 499

使用STM32F103C8T6控制舵机丝滑运转附代码

使用STM32F103C8T6控制舵机丝滑运转原理和案例,附代码。

m0_63566592的博客 4237

Java算法排序实验的实验心得_20192312吴欣欣 实验七《查找与排序》实验报告

20192312 2020-2021-1 实验七 《查找与排序》实验报告课程:《程序设计与数据结构》班级: 1923姓名: 吴欣欣学号:20192312实验教师:王志强实验日期:2020年11月26日必修/选修: 必修1.实验内容1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。要求不少于10个测试用例,提交测试用...

weixin_42360993的博客 3055

Unity游戏开发:从零开始适配Nintendo Switch的完整指南

本文详细介绍了如何使用Unity进行Nintendo Switch游戏开发的完整流程,包括开发环境搭建、Unity工程适配、手柄与硬件特性开发、存储与性能优化等关键步骤。特别强调了Switch SDK的配置、输入系统改造和内存优化技巧,帮助开发者高效完成跨平台适配。

vodka的博客 1068

数字化转型是什么?核心又是什么呢?

01到底什么是数字化转型? 这时候你或许要问笔者了,既然你说使用新兴技术不是数字化转型,那使用新的商业模式总该是数字化转型了吧?你比如阿里巴巴,作为我们中国人最熟悉的开展电子商务的公司,它可以说是新的商业模式最大的开创者了:阿里巴巴是世界上最大的零售商,却没有任何一家实体店和任何库存;再比如优步(Uber),我们非常熟悉的一个线上打车平台,它可以算是世界上最大的出租车公司了,但是它不拥有一辆出租车。还有近些年来,我们经常使用的的旅游房屋租赁社区爱彼迎(Airbnb),它可以为消费者提供多样的住宿信息..

weixin_58342023的博客 4043

Java How to Program学习笔记_第十九章_查询、排序及算法的时间复杂度(Searching, Sorting and Big O)——章节小结(Summary)

这章复习了查询及排序的一些最基本的算法(简单查询法、选择排序法等),以及不同算法的时间复杂度的比较。 Summary Section 19.1 Introduction • Searching involves determining if a search key is in the data and, if so, finding its location. ...

预见未来to50的专栏 313

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

光学串扰是一个比较难以理解的光学现象,实际影响往往不大。一、光学串扰产生的原因通常是入射角度太大,光线在不同通道之间产生了混叠二、光学串扰产生的现象光学串扰容易导致迷宫纹。总结本节讲了光学串扰产生的原因,现象。

xiaoshixiu的专栏 1573

Java How to Program学习笔记_第十九章_查询、排序及算法的时间复杂度(Searching, Sorting and Big O)

  1. 查询和排序算法   2. 查询和排序算法的Big O(时间复杂度)   3. 不同Big O的数值对比  

预见未来to50的专栏 314

同济大学C++mooc第五、六讲参考答案

同济大学C++moooc第5、6讲 第五讲 第一题 随机产生10个30~100(包括30,100)的正整数,求它们的最大值、最小值、平均值,并显示整个数组的值和结果。 代码片. // #include<iostream> const int n = 10; using namespace std; int main() { int s[n],i,j,t,sum=0; for (i = 0; i < n; i++)

cjzui6666的博客 1万+

从零玩转显示屏:手把手教你用Arduino驱动SPI屏幕(附引脚定义图)

本文提供了一份详尽的Arduino驱动SPI屏幕的入门指南。从SPI接口的核心引脚定义(如DC、RESET)与RGB接口的区别讲起,手把手指导硬件连接与软件库配置,并最终通过一个天气显示器实战项目,帮助读者掌握驱动SPI屏幕、显示RGB色彩内容的核心技能。

weixin_29189987的博客 131

Java算法排序实验的实验心得_20162311 实验三-查找与排序 实验报告

20162311 实验三-查找与排序 实验报告目录一、查找与排序-1(一) 实验目的(二) 实验过程Searching.java和Sorting.java是书上已经写好的类,只需进行junit测试就行。为了体现查找的异常情况,我在线性查找中添加了一个在数组中不存在的测试用例,二分查找则通过逆序(即降序)来体现异常情况测试截图线性查找正常线性查找异常二分查找正序二分查找逆序选择排序插入排序冒泡排序快...

weixin_30616309的博客 5382

jetson orin nano 使用cuPCL

jetson开发板上使用pcl时,正常使用的是cpu,拖慢了整体的效率。cuPCL有一些库用于使用CUDA处理点云。

weixin_42256401的博客 1019

查找与排序算法(Searching adn Sorting)

1,查找算法   常用的查找算法包括顺序查找,二分查找和哈希查找。   1.1 顺序查找(Sequential search)     顺序查找: 依次遍历列表中每一个元素,查看是否为目标元素。python实现代码如下:   #无序列表 def sequentialSearch(alist,item): found = False pos=0 whi...

weixin_30608131的博客 521

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Sorting Summary

新起点 238

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Sorting

Introduction Sorting is ordering a list of objects. We can distinguish two types of sorting. If the number of objects is small enough to fits into the main memory, sorting is called internal sorting....

南方以北 2413

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

经典算法题目:Cracking the coding interview 问题与解答

Cracking the coding interview--问题与解答 March 14, 2013 作者:Hawstein 出处:http://hawstein.com/posts/ctci-solutions-contents.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注

我的专栏 7584

[CareerCup] 11.2 Sort Anagrams Array 异位词数组排序

  11.2 Write a method to sort an array of strings so that all the anagrams are next to each other.   这道题让我们给一个字符串数组排序,让所有的变位词Anagrams排在一起,关于变位词,LeetCode里有两道相关的题目Anagrams 错位词和Valid Anagram 验证变位词。那么对...

weixin_34232617的博客 132

Hard 单词变型成另一个单词 @CareerCup

对起始单词的每一个字母都做替换,把替换后的单词加入到queue中,并同时维护一个Map来记录变化前单词和变化后单词的联系。用来回溯时能打印出路径。 package Hard; import java.util.HashSet; import java.util.LinkedList; import java.util.Map; import java.util.Queue; impor

4761

Hard 找到由其它单词组成的最长单词 @CareerCup

用DFS的那个模板就能做出来,值得注意的是一个词必须被除自己外的其他词组成才行,不能是自己组成自己。 package Hard; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import CtCILibrary.A

3649

Tree_Graph 判断T2是否为T1的子树 @CareerCup

原文: You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an algorithm to decide if T2 is a subtree of T1 译文: 有两棵很大的二叉树:T1有上百万个结点,T2有上百个结点。写

3486

Stack_Queue 把栈排序 Sort a stack @CareerCup

原文: Write a program to sort a stack in ascending order. You should not make any assumptions about how the stack is implemented. The following are the only functions that should be used to write thi

3231

Stack_Queue 猫狗队列问题 Cat dog queue @CareerCup

An animal shelter holds only dogs and cats, and operates ona strictly “first in, first out” basis. People must adopt either the “oldest”(based on arrival time) of all animals at the shelter, or they

3092

Recursion 字符串的全排列 String Permutation @CareerCup

字符串全排列的题目,还是套用模板,同样要注意ret的size问题会变化。而且与上一题不同的是不光是要在ret后面添加进新的组合,而且还要移除前面用过的组合。类似一个队列。 另外Java的substring中区间闭合情况是左闭右开 [ ) 所以想把一个字符串拆成两个区间就可以用这一句: for(int j=0; j<=tmp.length(); j++){ // substring

2977

Moderate 判断井字游戏的胜利 @CareerCup

基于要查找的次数来决定是否要预处理。预处理方式按照3进制来做。 另外,检查是否赢了要判断横行,纵列,正反对角线 package Moderate; /** * Design an algorithm to figure out if someone has won in a game of tic-tac-toe. 译文: 设计算法检查某人是否赢得了井字游戏。 *

2970

LinkLists 检查一个链表是否为回文 Check if a linked list is palindrome @CareerCup

Implement a function to check a linked list is a palindrome 检查一个链表是否为回文 思路: 1 Iterative,利用栈,把链表前半段存入栈,再逐个弹栈和链表后半段比较。注意链表长度为奇数的情况!要跳过中间节点! 2 递归! 定义递归函数为 Result rec(LinkedListNode head, int l

2921
上一篇: Soring&Searching 合并两个有序数组 @CareerCup
下一篇: Sorting&Searching 旋转数组二分法查找 @CareerCup
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值