005推断两个字符串是否是变位词 (keep it up)

写一个函数推断两个字符串是否是变位词。

变位词(anagrams)指的是组成两个单词的字符同样,但位置不同的单词。比方说,
abbcd和abcdb就是一对变位词

这也是简单的题。 我们能够排序然后对照, 也能够直接统计字符出现的个数来推断。这里给出统计字符来推断的代码:

bool isAnagram1(const string& vLeft, const string& vRight)
{
	if (vLeft.size() != vRight.size()) return false;
	int Count[256];
	memset(Count, 0, sizeof(Count));

	for (unsigned int i=0; i<vLeft.size(); ++i)
	{
		++Count[vLeft[i]];
		--Count[vRight[i]];
	}

	for (unsigned int i=0; i<vLeft.size(); ++i)
	{
		if (Count[vLeft[i]] !=0) return false;
	}

	return true;
}
时间: 2024-12-19 20:52:06

005推断两个字符串是否是变位词 (keep it up)的相关文章

判断两个字符串是否是变位词 (keep it up)

写一个函数判断两个字符串是否是变位词.变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词.比如说, abbcd和abcdb就是一对变位词 这也是简单的题. 我们可以排序然后对比, 也可以直接统计字符出现的个数来判断.这里给出统计字符来判断的代码: bool isAnagram1(const string& vLeft, const string& vRight) { if (vLeft.size() != vRight.size()) return false; in

CareerCup之1.4判断字符串是否为变位词

[题目] 原文: 1.4 Write a method to decide if two strings are anagrams or not. 译文: 写一个函数判断两个字符串是否是变位词. [分析] 变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词.比如说, abbcd和abcdb就是一对变位词.该题目有两种思路: [思路一] 由于变位词只是字母的顺序改变,字符长度,字符种类没有改变,所以根据此我们只要重新根据字典序排序一下,两个字符串也就一样了. The eyes

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

判断两个字符串是否互为变形词 给定两个字符串 str1 和str2 ,如果两个字符串中出现的字符种类一样,次数也一样,则互为变形词,实现一个函数判断两个字符串是否互为变形词.例如 str1="123",str2="132",true; str1="123",str2="1332",false; [解题思路] 1. 首先比较两个字符串的长度,长度不同肯定是false. 2. 如果长度相同,新建一个数组,用以存储每个字符出现次数.

判断两个字符串是否互为旋转词

题目 对于一个字符串str,把前面任意部分挪到后面形成的字符串叫作str的旋转词.比如str="12345",其旋转词有"23451"."34512"."45123"."51234".给定两个字符串a和b,判断a和b是否互为旋转词. 实现 这是一种非常讨巧的实现方式,将原始字符串累加一次,并以用String自带的contains方法判断是否包含所判断的是否匹配的字符串 import org.junit.As

9.11排序与查找(二)——对字符串数组进行排序,将所有的变位词排在相邻的位置

/** * 功能:对字符串数组进行排序,将所有的变位词排在相邻的位置. */ 两种方法: 方法一: /** * 思路:套用排序算法,并修改比较器.这里比较器用来指示两个字符串胡伟变位词就是相等的. * @param array */ public static void sort(String[] array){ Arrays.sort(array, new AnagramComparator()); } class AnagramComparator implements Comparator

高速比較两个字符串中字符全然同样(兄弟字符串比較)

刚才上网,看到这个问题在好多论坛上得到非常大的讨论.于是尝试练习了一下. [问题描写叙述] 对于两个字符串,判定包括的字符是否全然同样.比方:"sabac"和 "basca"算是包括的字符全然同样,而且同样字符的数量也一样要同样,但它们顺序能够不一样. [问题分析] 1.先推断两个字符串的长度是否同样 2. 推断同样长度的字符串中的字符和同样字符的数量是否同样. 3. 推断字符时,先把字符串分割成字符串数组,然后对字符数据排序,接着把两个字符串相应的字符进行比对.

变位词的查找(上)

本文也同步发表在我的公众号"我的天空" 这次我们聊一个比较有意思的话题:变位词的查找,这个话题在<编程珠玑>中出现,此书很经典,偏向于算法,大家如果能通读的话,肯定受益匪浅!   什么是变位词 不同的单词,如果其组成的字母相同的话,那么这些单词就互为变位词,譬如pots.stop. tops这三个单词就是互为变位词,都是由字母p.o.t.s组成,但是"pot" 就不与上述单词互为变位词,其缺少字母s,"potss"也不是,其多了一个字

互为变位词

// 判断两个单词是否互为变位词: 如果两个单词中的字母相同,并且每个字母出现的次数也相同, 那么这两个单词互为变位词 #include <stdio.h> #include <string.h> int is_anagram(char *s1, char *s2) // 判断两个数是否互为变位词, 若是返回1 { if(strlen(s1) != strlen(s2)) return 0; int count[256] = {0}; char *p; p = s1; while(

[Swust 549]--变位词(vector水过)

Time limit(ms): 1000 Memory limit(kb): 65535 Description 输入N和一个要查找的字符串,以下有N个字符串,我们需要找出其中的所有待查找字符串的变位词(例如eat,eta,aet就是变位词)按字典序列输出,并且输出总数目 Input 第一行:N(代表共有N个字符串属于被查找字符串) (N<=50) 第二行:待查找的字符串(不大于10个字符) 以下N行:被查找字符串(不大于10个字符) Output 按字典序列输出在被查找字符串中待查找字符串的所