leetcode Valid Anagram 异位体
来源:互联网 发布:java多线程 time wait 编辑:程序博客网 时间:2024/05/23 11:38
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
又想到这是字符匹配问题,故可以用一个Int[26]数组存储对应小写字母出现的个数。在确定两个字符串长度一致时,26个字母出现字数对应一样说明两者是一样的,只不过在各自字符串出现的顺序不一样:
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
一开始简单想法就是先将两个字符串排序,最后比较即可:结果时间复杂度大了:
void sel(char *a,int n){int i,j;int k;char max;for(i=0;i<n-1;i++) {max=a[0];k=0; for(j=0;j<n-i;j++) if(max<a[j]){max=a[j];k=j;}char temp=a[k];a[k]=a[n-i-1];a[n-i-1]=temp;}}bool isAnagram(char* s, char* t) { int l1=strlen(s);int l2=strlen(t);if(l1!=l2)return false;sel(s,l1);sel(t,l2);for(int i=0;i<l1;i++)if(s[i]!=t[i])return false;return true;}
又想到这是字符匹配问题,故可以用一个Int[26]数组存储对应小写字母出现的个数。在确定两个字符串长度一致时,26个字母出现字数对应一样说明两者是一样的,只不过在各自字符串出现的顺序不一样:
bool isAnagram(char* s, char* t) { int l1=strlen(s);int l2=strlen(t);int a[26]={0};int b[26]={0};if(l1!=l2)return false;for(int i=0;i<l1;i++)a[s[i]-'a']++;for(int i=0;i<l2;i++)b[t[i]-'a']++;for(int i=0;i<26;i++)if(a[i]!=b[i])return false;return true;}
0 0
- leetcode Valid Anagram 异位体
- Leetcode #242 Valid Anagram
- leetcode-242-Valid Anagram
- Leetcode: Valid Anagram
- 【leetCode】Valid Anagram
- [leetcode] 242.Valid Anagram
- leetcode 242: Valid Anagram
- 【leetcode】Valid Anagram
- [leetcode] Valid Anagram
- LeetCode Valid Anagram
- 【LeetCode】242 Valid Anagram
- [LeetCode] Valid Anagram
- leetcode: Valid Anagram
- leetCode(53):Valid Anagram
- [leetcode 242]Valid Anagram
- leetcode Valid Anagram
- leetCode #242 Valid Anagram
- LeetCode题解:Valid Anagram
- Java泛型总结
- Cheapest Palindrome(区间DP,好题)
- Spring Mail
- 深入分析android5.1 healthd
- QGIS python开发手册-加载工程文件
- leetcode Valid Anagram 异位体
- 认识HTML5的WebSocket
- cout格式化输出
- SQL经典入门(第5版)学习笔记
- C# BlueTooth 连接 接收 发送文件
- Openjudge4977 怪盗基德的滑翔翼(dp)
- 【Spark学习】Spark 1.1.0 with CDH5.2 安装部署
- CentOS永久禁止PackageKit后台运行
- HDOJ 4707 Pet(并查集)