题目:在英语中,如果两个单词中出现的字母相同,并且每个字符出现的次数也相同,那么这两个单词互为变位词(Anagram).例如slient与listen、evil与live等互为变位词。请完成一个函数,判断输入的两个字符串是不是互为变位词。
同样,和前面几篇博客中的思路大致相同,我们可以用一个哈希表映射第一个字符串中的每个字符,统计字符串中每个字符出现的次数,当扫描到第一个字符串中出现的每个字符时,为哈希表对应的项得到值加1,接下来扫描第二个字符串,扫描到每个字符时,为哈希表对应的项的值减去1。如果扫描完整个字符串后,哈希表中所有的值都是0,那么这两个字符串互为变位词。

一开始按照上面的思路写完代码后,没有处理字符串长度不一样的情况,导致它在处理第一个字符串比第二个字符串短时判断失误,经过修改的代码如下:

bool IsAnagram(char* str1, char* str2)
{char hashtable[256] = { 0 };char* cur1 = str1;char* cur2 = str2;int sz1 = strlen(str1);int sz2 = strlen(str2);if (sz1 != sz2)return false;while (*cur1 != '\0'){hashtable[*cur1]++;++cur1;}while (*cur2 != '\0'){if (hashtable[*cur2] != 0){hashtable[*cur2]--;}++cur2;}for (int i = 0; i < 256; i++){if (hashtable[i] != 0)return false;}return true;
}int main()
{char str1[] = "listen";char str2[] = "slient";char str3[] = "alient";char str4[] = "evil";char str5[] = "live";char str6[] = "eil";bool ret1 = IsAnagram(str1, str2);bool ret2 = IsAnagram(str1, str3);bool ret3 = IsAnagram(str4, str5);bool ret4 = IsAnagram(str6, str5);cout << ret1 << endl;cout << ret2 << endl;cout << ret3 << endl;cout << ret4 << endl;system("pause");return 0;
}

判断两个单词是否互为变位词相关推荐

  1. C++实现判断两个单词是否为变位词

    C++实现判断两个单词是否为变位词 如果两个单词中出现的字母相同,并且每个字母出现的次数也相同,那么这两个单词就称为变位词.完成一个函数判断输入的两个字符串是不是互为变位词 #include<i ...

  2. 判断两个字符串是否互为变位词

    看了个算法题目,觉得有趣,就换成了java版本的. 原文地址:blog.csdn.net/ns_code/article/details/21409663 题目: Write a method to ...

  3. c语言判断两个单词是否为变位词,C++变位词问题分析

    在<编程珠玑>一书的第二章提到了一个变位词问题,变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary.由变位词可以引申出几个算法问题,包 ...

  4. java 变位词,java程序 问题: 判断两个单词是否为变位词。

    满意答案 oicq... 2013.07.10 采纳率:40%    等级:13 已帮助:13836人 import java.util.Arrays; public class Test { /** ...

  5. 7-20 判断两个字符串是否为变位词 (10 分)如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy

    7-20 判断两个字符串是否为变位词 (10 分) 如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词.比如,"heart"与"earth" ...

  6. 浙大python判断两个字符串是否为变位词_算法2----------变位词

    1.背景: 变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary. 题1:判断两个字符串s1和s2是否为变位词. 经典的字符串变位词检测问题是比较不 ...

  7. 浙大python判断两个字符串是否为变位词_Python实现对变位词的判断

    Python实现对变位词的判断 什么是变位词呢?即两个单词都是由相同的字母组成,而各自的字母顺序不同,譬如python和typhon,heart和earth. 变位词的判断 既然我们知道了变位词的定义 ...

  8. 检查两个单词是否为变位词(Anagram)

    检查两个单词是否为变位词(Anagram) 如果两个单词含有的字母相同即为变位词,例如"listen"and"silten" import java.util. ...

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

    判断两个字符串是否互为变形词 [题目] 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词.请实现函数判断两个字符 ...

最新文章

  1. Hadoop hdfs完全分布式搭建教程
  2. vue解决启动报错cjs loader.js Error: Cannot find module ‘../config‘问题
  3. SpringMVC深度探险(三) —— DispatcherServlet与初始化主线
  4. JS判断是否为安卓orIOS
  5. springmvc 传参Required String parameter 'xxxx' is not present
  6. centos7设置时间为日本东京时间
  7. c语言向自定数组_C语言一维数组的定义和引用
  8. Beetlex官网迁移完成
  9. .NET编程-----------------------Web.config配置文件详解
  10. 前端学习(2399):关于编辑代码编辑器
  11. android contextmenu listview,Android ListView ContextMenu
  12. Connect By在10g中得增强, nocycle关键字等
  13. Prelude CC 2019 for Mac附激活补丁 v8.1.0中文版
  14. proteus8.6安装包,单片机仿真软件
  15. 青少年编程等级考试对孩子有用吗?
  16. 转:MySQL 的 my.cnf 文件(解决 5.7.18 下没有 my-default.cnf )
  17. 【游戏分析】《大王不高兴》1.4.0.0版本 游戏体验分析总结
  18. 树莓派WIFI配置遇到的坑 之 连接不上WIFI
  19. 微博朋友圈亿级Feed流如何轻松设计?
  20. 【与GPT对话】杂记

热门文章

  1. 对接应用宝SDK(YSDK)QQ能登录微信无法登陆的一些解决方法**
  2. C#实现自己的远程桌面控制工具
  3. matlab regress RMSE,在利用regress进行多元线性回归中出现的问题
  4. java lpad oracle_oracle中lpad函数是干嘛用的?
  5. Java面试宝典(2018版)
  6. 洛谷P3987 我永远喜欢珂朵莉~ 树状数组+vector(暴力)
  7. BlogsToWordPress v16.9 – 将(新版)百度空间,网易163,新浪sina,QQ空间,人人网,CSDN,搜狐Sohu,博客大巴Blogbus,天涯博客,点点轻博客等博客搬家到Wor
  8. 小米电视怎么看cctv?安装小鲸电视免广告教程值得看
  9. 2020年个人年终总结与计划
  10. WPF基础到企业应用系列8——依赖属性之“风云再起”