Leetcode ☞ 242. Valid Anagram ☆
2016-02-27 20:54
232 查看
网址:https://leetcode.com/problems/valid-anagram/
My Submissions
Question
Total Accepted: 62627 Total
Submissions: 153094 Difficulty: Easy
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.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
我的AC(笨):
//ASCII码:0--48 A--65 a--97 范围是0~127。
bool isAnagram(char* s, char* t) {
int Hash1[256], Hash2[256], flag = 0;//数组范围128的话会不够
memset(Hash1,0,257 * sizeof(int));
memset(Hash2,0,257 * sizeof(int));
if (strlen(s) != strlen(t))
return false;
while(*s){
Hash1[*s++]++;//*s++:先*s,再s++。
Hash2[*t++]++;
}
for(int i = 0; i < 257 ; i++){
if(Hash1[i] != Hash2[i]){
flag = 1;
break;
}
}
return flag ? false : true;
}
讨论区里的很nice的解答,比我的笨方法运算少:
https://leetcode.com/discuss/83342/0ms-fastest-c-solution
bool isAnagram(char* s, char* t) {
if(strlen(s) != strlen(t)) {
return false;
}
int mask[256] = {};
char *c = s;
while(*c) {
mask[*c++]++;
}
c = t;
while(*c) {
if(mask[*c] > 0) {
mask[*c++]--;
} else {
return false;
}
}
return true;
}
分析:
1.数组的范围问题:http://blog.sina.com.cn/s/blog_a401a1ea0101fh3z.html
2.注意 *s++的运算顺序:先*s,再s++。“++”作用在地址上,而(*s)++里的“++”是作用在数值上。
python,高级语言真是偷奸耍滑的不行:
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
a = list(s)
b = list(t)
c = a.sort()
d = b.sort()
for i,j in zip(c,d):
if i != j:
return False
return True
242. Valid Anagram
My SubmissionsQuestion
Total Accepted: 62627 Total
Submissions: 153094 Difficulty: Easy
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.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
我的AC(笨):
//ASCII码:0--48 A--65 a--97 范围是0~127。
bool isAnagram(char* s, char* t) {
int Hash1[256], Hash2[256], flag = 0;//数组范围128的话会不够
memset(Hash1,0,257 * sizeof(int));
memset(Hash2,0,257 * sizeof(int));
if (strlen(s) != strlen(t))
return false;
while(*s){
Hash1[*s++]++;//*s++:先*s,再s++。
Hash2[*t++]++;
}
for(int i = 0; i < 257 ; i++){
if(Hash1[i] != Hash2[i]){
flag = 1;
break;
}
}
return flag ? false : true;
}
讨论区里的很nice的解答,比我的笨方法运算少:
https://leetcode.com/discuss/83342/0ms-fastest-c-solution
bool isAnagram(char* s, char* t) {
if(strlen(s) != strlen(t)) {
return false;
}
int mask[256] = {};
char *c = s;
while(*c) {
mask[*c++]++;
}
c = t;
while(*c) {
if(mask[*c] > 0) {
mask[*c++]--;
} else {
return false;
}
}
return true;
}
分析:
1.数组的范围问题:http://blog.sina.com.cn/s/blog_a401a1ea0101fh3z.html
2.注意 *s++的运算顺序:先*s,再s++。“++”作用在地址上,而(*s)++里的“++”是作用在数值上。
python,高级语言真是偷奸耍滑的不行:
class Solution(object):
def isAnagram(self, s, t):
"""
:type s: str
:type t: str
:rtype: bool
"""
a = list(s)
b = list(t)
c = a.sort()
d = b.sort()
for i,j in zip(c,d):
if i != j:
return False
return True
相关文章推荐
- Codeforces 633 C Spy Syndrome 2 字典树
- [android] 测试的相关概念
- Xamarin Dropdown menu
- CSS3 入门2
- python实现高精度减法
- java创建对象的4中方法
- 【jsoncpp】json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
- 机房重构模板方法
- JQuery Uploadify 基于JSP的无刷新上传实例
- 软件工程文档总结
- Android ContentProvider源码分析
- python实现高精度加法
- 滚轮向下滚,自动加载内容
- Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
- Mariadb/Mysql binlog大全--持续更新
- “特立独行”的 Ubuntu 手机,未来的生存空间几何?
- SSH-jar包相应作用
- python实现高精度乘法
- 1045. Favorite Color Stripe (30)
- H-Index