leetcode 每日一题 242. Valid Anagram

本文介绍了一种通过统计字符频率来判断两个字符串是否为异位词的方法。利用一个长度为26的整型数组,分别记录第一个字符串中各字符出现次数,并从第二个字符串中减去相应字符的出现次数。最后检查数组所有元素是否为0,以此判断两字符串是否为异位词。

这题想了很久也没有做···今天做了


主要是trick就是要把这些字母统计出来,一共26个字母,可以统计到一个0~25数组中,第一个字符串中包含则增,第二个字符串中包含则减


最后只要比较这个字符串是否为0即可


class Solution {
public:
    bool isAnagram(string s, string t) {
        int lens=s.length(); 
        int lent=t.length();
        int nums[26]={0}; 
        if(lens!=lent) return false;
        for(int i=0;i<lens;i++){
            nums[int(s[i])-97]++;
        }
        for(int i=0;i<lent;i++){
            nums[int(t[i])-97]--;
        }
        for(int j=0;j<26;j++){
            if(nums[j]!=0) return false;
        }
        return true;
    }
};



### LeetCode 上的热门基础题目 LeetCode 是程序员提升算法能力的重要平台之一,许多公司面试都会涉及该网站上的经典题目。对于初学者来说,掌握一些常见的基本问题是很有帮助的[^1]。 #### 数组与字符串类问题 - **两数之和 (Two Sum)** 给定一个整数数组 `nums` 和一个目标值 `target` ,请找出数组中和为目标值的那两个整数,并返回他们的数组下标。 ```python def twoSum(nums, target): num_map = {} for i, num in enumerate(nums): complement = target - num if complement in num_map: return [num_map[complement], i] num_map[num] = i ``` - **有效的字母异位词 (Valid Anagram)** 判断两个字符串是否互为变位词(即通过重新排列其中一个字符串可以得到另一个字符串)。 ```python from collections import Counter def isAnagram(s, t): return Counter(s) == Counter(t) ``` #### 链表操作 - **反转链表 (Reverse Linked List)** 反转单向链表是一个经典的练习题,有助于理解指针的概念。 ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverseList(head: Optional[ListNode]) -> Optional[ListNode]: prev = None curr = head while curr: temp_next = curr.next curr.next = prev prev = curr curr = temp_next return prev ``` 这些只是冰山一角,在准备技术面试时,建议深入研究更多数据结构如栈、队列以及图论等内容,并尝试解决更复杂的挑战性问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值