383. Ransom Note
2016-08-21 15:28
148 查看
Given
an
arbitrary
ransom
note
string
and
another
string
containing
letters from
all
the
magazines,
write
a
function
that
will
return
true
if
the
ransom
note
can
be
constructed
from
the
magazines ;
otherwise,
it
will
return
false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
代码:
另一种解法:
分析:大意就是给两个字符串,判断第一个字符串能否由第二个字串中字母组成,第二个字符串中的每个字符只能使用1次
个人用的hash表解决,0-256的值可以表示所有的字符了,所以哈希表大小定义为256.,用字母的asc码作下标。
字符为key,每个字符出现的次数为value
建立2个哈希表hash1、hash2,分别统计每个字符串出现的次数
最后比较hash1、hash2.
false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true
代码:
class Solution { public: bool canConstruct(string ransomNote, string magazine) { sort(ransomNote.begin(),ransomNote.end()); sort(magazine.begin(),magazine.end()); int sum=0; int ri=0,mj=0; while (mj!=magazine.length()) { mj=magazine.find(ransomNote[ri],mj); ri++; if (mj!=string::npos) { mj++; sum++; } else break; } if (sum==ransomNote.length()) return true; else return false; } };
另一种解法:
分析:大意就是给两个字符串,判断第一个字符串能否由第二个字串中字母组成,第二个字符串中的每个字符只能使用1次
个人用的hash表解决,0-256的值可以表示所有的字符了,所以哈希表大小定义为256.,用字母的asc码作下标。
字符为key,每个字符出现的次数为value
建立2个哈希表hash1、hash2,分别统计每个字符串出现的次数
最后比较hash1、hash2.
相关文章推荐
- LeetCode - 383. Ransom Note
- [leetcode] 383. Ransom Note
- 383. Ransom Note--哈希的方法
- 383. Ransom Note
- [Leetcode] 383. Ransom Note 解题报告
- leetcode题解-58. Length of Last Word && 67. Add Binary && 383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note
- 383. Ransom Note
- [leetcode] 383. Ransom Note 解题报告
- LeetCode 383. Ransom Note
- Leetcode- 383. Ransom Note(string)
- <LeetCode OJ> 383. Ransom Note
- 383. Ransom Note
- leetcode 383. Ransom Note 解题报告
- LeetCode 383. Ransom Note
- LeetCode之路:383. Ransom Note
- 383. Ransom Note
- leetcode 383. Ransom Note