数据结构和算法经典100题-第25题
2015-12-24 09:18
531 查看
判断两个字符串是否互为变形词
题目要求:
给定两个字符串str1和str2,若str1和str2中的字符种类一样,每个字符出现的频率一样,那么str1和str2就互为变形词。
题目分析:
可以先把一个字符串中字符出现的频率统计出来,然后再验证另一个字符串字符出现的频率。
Okay,no code say what?
路漫漫其修远兮,最近工作很忙啊,这个系列得加快更新了…
题目要求:
给定两个字符串str1和str2,若str1和str2中的字符种类一样,每个字符出现的频率一样,那么str1和str2就互为变形词。
题目分析:
可以先把一个字符串中字符出现的频率统计出来,然后再验证另一个字符串字符出现的频率。
Okay,no code say what?
#include <stdio.h> #include <string> #include <iostream> #include <map> using namespace std; bool isDeformation(string &str1,string &str2) { if (str1.empty() || str2.empty() || str1.size() != str2.size()) { return false; } map<char,int> mapCount; for (string::iterator i = str1.begin(); i != str1.end(); ++i) { mapCount[*i]++; } for (string::iterator i = str2.begin(); i != str2.end(); ++i) { mapCount[*i]--; if (mapCount[*i] < 0) return false; } return true; } int main(void) { string str1("hello"); string str2("eollh"); string str3("hellq"); if (isDeformation(str1,str2)) { cout<<" str1 & str2 is deformation."<<endl; } else { cout<<" str1 & str2 is not deformation."<<endl; } if (isDeformation(str1,str3)) { cout<<" str1 & str3 is deformation."<<endl; } else { cout<<" str1 & str3 is not deformation."<<endl; } return 0; }
路漫漫其修远兮,最近工作很忙啊,这个系列得加快更新了…
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#数据结构之顺序表(SeqList)实例详解
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 数据结构之Treap详解
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解