Java算法题:赎金信 最优解
时间: 2023-05-28 08:03:31 浏览: 85
题目描述
给定两个字符串s和t,判断s是否可以由t中的字符重新排列组成。
例如,s = “leetcode”,t = “cdeelote”是可行的,而s = “hello”,t = “world”则不是可行的。
注意:假设字符串只包含小写字母。
样例
输入: s = "leetcode", t = "cdeelote"
输出: true
输入: s = "hello", t = "world"
输出: false
解题思路
这道题可以使用哈希表来解决。
因为只有小写字母,所以可以使用一个长度为26的数组count来表示每个字母出现的次数。先遍历t字符串,统计每个字母出现的次数,然后遍历s字符串,如果s中的某个字母在count中出现的次数为0,则返回false,否则将count中对应的字母出现次数减1。最后如果都能匹配成功,则返回true。
Java代码
相关问题
JAVA算法题: 不同整数的最少数目
ChitGPT:这个问题涉及编程类的问题,我可以回答。这个问题的答案依赖于具体的算法和数据结构。常用的算法包括贪心算法和动态规划算法。在实现算法的过程中,需要用到一些数据结构,例如哈希表、红黑树等。根据具体情况,可以选择不同的算法和数据结构来解决这个问题。
算法题:链表的中间结点。java实现
以下是Java实现:
```
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while(fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
```
算法思路:
使用两个指针,一个指针每次走一步,另一个指针每次走两步,当快指针到达链表末尾时,慢指针刚好到达链表的中间位置。