男朋友在飞书被裁了,刚买的上海房子,每个月房贷加房租1.2w,怎么办?

773e968aeeb5e3aa2a3689bb87835a6a.gif

(关注数据结构和算法,了解更多新知识)

前几天飞书刚宣布裁员,有的人就坐不住了,一位网友说:自己的男朋友在飞书被裁了,上海的房子才买一年,每月有7千房贷和5000房租,怎么办?

6faa6113c7c0d57e72e2782e4daab2be.png

这还能怎么办,一份工作而已,又不是得了绝症,工作没了再找,再说失业的又不止他一个。

除了体制内的大多数人都会经历过失业,裁员也不是他的错,你应该做的是安慰自己的男朋友,做好下一步的规划,继续找工作。

我们来看下各位网友的评论,那是相当精彩,千万不要听网友的再找一个,即便找了也不能保证他永远不会失业,到时候如果再失业怎么办呢?再找?

2ec9add2e70ecb014a3d78a150f9d4f3.png

ddd25ce6e2b48b8e203cc60feea299e7.png

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第242题:有效的字母异位词。

问题描述

来源:LeetCode第242题

难度:简单

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例1:

输入: s = "anagram", t = "nagaram"

输出: true

示例2:

输入: s = "rat", t = "car"

输出: false

  • 1 <= s.length, t.length <= 5 * 10^4

  • s 和 t 仅包含小写字母

问题分析

这题让判断两个字符串是否是字母异位词,所谓的字母异位词也就是两个字符串中每个字符出现的次数都是一样的,这道比较简单。

我们先统计第一个字符串中每个字符出现的次数,然后再统计第二个字符串中每个字符出现的次数(参照下面的python代码),统计第二个字符串的时候要减去对应字符的次数,如果为负,说明第二个字符串中某个字符比第一个字符串中相同的字符多,他们不可能是字母异位词,直接返回false。

实际上这里还可以优化,使用一个for循环(参照java,c++,c代码),如果最后count数组中每个元素都是0,说明两个字符串中每个字符的个数都是相等的,他们就是字母异位词,直接返回true。

JAVA:

public boolean isAnagram(String s, String t) {
    if (s.length() != t.length())
        return false;
    int[] count = new int[128];
    int c = 0;
    for (int i = 0; i < s.length(); i++) {
        if (++count[s.charAt(i)] == 1) c++;
        if (--count[t.charAt(i)] == 0) c--;
    }
    return c == 0;
}

C++:

public:
    bool isAnagram(string s, string t) {
        if (s.size() != t.size())
            return false;
        vector<int> count(128, 0);
        int c = 0;
        for (int i = 0; i < s.length(); i++) {
            if (++count[s[i]] == 1) c++;
            if (--count[t[i]] == 0) c--;
        }
        return c == 0;
    }

C:

bool isAnagram(char *s, char *t) {
    if (strlen(s) != strlen(t))
        return false;
    int count[128] = {0};
    int c = 0;
    for (int i = 0; i < strlen(s); i++) {
        if (++count[s[i]] == 1) c++;
        if (--count[t[i]] == 0) c--;
    }
    return c == 0;
}

Python:

def isAnagram(self, s: str, t: str) -> bool:
    if len(s) != len(t):
        return False
    count = [0] * 128
    for i in range(0, len(s)):
        count[ord(s[i])] += 1
    for i in range(0, len(t)):
        count[ord(t[i])] -= 1
        if count[ord(t[i])] < 0:
            return False
    return True

6ea9a4524dd0337788ae57be8ce2c212.gif

笔者简介

博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据结构和算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值