383. Ransom Note
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.
canConstruct(“a”, “b”) -> false
canConstruct(“aa”, “ab”) -> false
canConstruct(“aa”, “aab”) -> true
题目解读:
题目叫做Ransom Note,勒索信,为了不暴露字迹,就从杂志上搜索各个需要的字母,组成单词来表达的意思。这样来说,题目也就清晰了,判断杂志上的字是否能够组成勒索信需要的那些字符。 这里需要注意的就是杂志上的字符只能被使用一次,不过不用考虑大小写的问题。 有一种最简单的理解就是对于ransomNote里每个字符出现的次数必须小于或者等于该字符在magazine出现的次数。下面是代码(java):
java:
public class Solution {
//原理就是列出了magazine的字母表,然后算出了出现个数,然后遍历ransomNote,保证有足够的字母可用,代码非常清晰。
public boolean canConstruct(String ransomNote, String magazine) {
int[] arr = new int[26];
for(int i=0;i<magazine.length();i++)
{
arr[magazine.charAt(i) - 'a']++;
}
for(int i=0;i<ransomNote.length();i++)
{
if(--arr[ransomNote.charAt(i)-'a'] < 0)
return false;
}
return true;
}
}
本文介绍了一种简单有效的算法,用于判断给定的勒索信字符串是否可以从一系列杂志字符串中构造出来。通过统计杂志字符串中各字符出现的次数,并检查这些字符是否足够构成勒索信字符串,从而实现目标。
2351

被折叠的 条评论
为什么被折叠?



