为何程序员老婆都很漂亮,因为是自己new出来的,想加什么属性就加什么属性。。...

文章通过网友讨论和一个简单的LeetCode算法题目(830题)探讨了程序员妻子为何被形容为漂亮,指出聪明和长时间专注工作可能是原因。解题过程中展示了Java、C++、C和Python等编程语言处理字符串连续字符的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8fe3c4ceaa1d0b6e7a1ba48e41fd6b4d.gif

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

最近网上一网友问:为何程序员的老婆都很漂亮,以前没注意到这个问题,今天还特意看了一下,那真是:

沉鱼落雁,闭月羞花

倾国倾城,婀娜多姿

仪态万方,秀外慧中

貌美如花,冰雪聪明

眉清目秀,天生丽质

国色天香,桃羞杏让

燕妒莺惭,一笑倾城

明眸皓齿,楚楚动人

娇艳欲滴,风姿绰约

亭亭玉立,千娇百媚

温婉娴淑,貌若天仙

风华绝代,花容月貌

美艳绝世,清丽绝俗

温柔贤惠,绝代佳人

冰肌玉骨,眉目如画

当然情人眼里出西施,无论怎么夸都不为过1e4a537b04e5e30335a81aaa96df3235.png,今天的算法题比较简单,学习算法的同时还可以学习下夸人的成语,一举两得,保存收藏,说不定以后可以用上。

e33ba8c5e791e7676c668e1b5d0af0da.png

我个人认为从事程序员这一行业的女的都很聪明,聪明的女性看起来肯定漂亮,还有就是很多程序员都是996,和老婆接触的时间少,距离产生美9e03b915368946a5fe323d943eb8ae24.png,我们来看下其他网友的回复:

6ee0395aba272a33ad46a42a07f6be3e.png

4be9d545e128c8c583c3e1ebdf08893f.png

4a06812d2845e18f978010d2004e803a.png

d9b4cecc074744d61e0c2ad72b241d91.png

fecb50c9a34e064696dd8297a0bf91d3.png

8d1172123e05e90333870041ca7f50f8.png

d2a57d8c79312b41d71637a19f9fa47e.png

55eb34eec652d1de2794e709b2698c85.png

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

来看下今天的算法题,这题是LeetCode的第830:较大分组的位置。

问题描述

来源:LeetCode第830题

难度:简单

在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。

例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。

分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。

我们称所有包含大于或等于三个连续字符的分组为较大分组 。找到每一个较大分组的区间,按起始位置下标递增顺序排序后,返回结果。

示例1:

输入:s = "abbxxxxzzy"

输出:[[3,6]]

解释:"xxxx" 是一个起始于 3 且终止于 6 的较大分组。

示例2:

输入:s = "abcdddeeeeaabbbcd"

输出:[[3,5],[6,9],[12,14]]

解释:较大分组为 "ddd", "eeee" 和 "bbb"

  • 1 <= s.length <= 1000

  • s 仅含小写英文字母

问题分析

较大分组实际上就是找到所有连续的3个及以上的字符,记录下他们的起始位置。这题比较简单,我们直接模拟即可。

JAVA:

public List<List<Integer>> largeGroupPositions(String s) {
    List<List<Integer>> ans = new ArrayList<>();
    int left = 0;// 相同字符串左边边界
    int length = s.length();
    while (left < length) {
        int count = 1;// 相同字符串的长度
        // 统计相同字符串的长度
        while (left + count < length && s.charAt(left) == s.charAt(left + count))
            count++;
        // 如果长度大于等于3,就把他加入到res中
        if (count >= 3)
            ans.add(Arrays.asList(left, left + count - 1));
        // 更新下一个字符串的左边边界
        left += count;
    }
    return ans;
}

C++:

public:
    vector<vector<int>> largeGroupPositions(string s) {
        vector<vector<int>> ans;
        int left = 0;// 相同字符串左边边界
        int length = s.size();
        while (left < length) {
            int count = 1;// 相同字符串的长度
            // 统计相同字符串的长度
            while (left + count < length && s[left] == s[left + count])
                count++;
            // 如果长度大于等于3,就把他加入到res中
            if (count >= 3)
                ans.push_back({left, left + count - 1});
            // 更新下一个字符串的左边边界
            left += count;
        }
        return ans;
    }

C:

int **largeGroupPositions(char *s, int *returnSize, int **returnColumnSizes) {
    int **ans = malloc(350 * sizeof(int *));
    *returnSize = 0;
    *returnColumnSizes = malloc(350 * sizeof(int));
    int left = 0;// 相同字符串左边边界
    int length = strlen(s);
    while (left < length) {
        int count = 1;// 相同字符串的长度
        // 统计相同字符串的长度
        while (left + count < length && s[left] == s[left + count])
            count++;
        // 如果长度大于等于3,就把他加入到res中
        if (count >= 3) {
            ans[*returnSize] = malloc(2 * sizeof(int));
            ans[*returnSize][0] = left;
            ans[*returnSize][1] = left + count - 1;
            (*returnColumnSizes)[(*returnSize)++] = 2;
        }
        // 更新下一个字符串的左边边界
        left += count;
    }
    return ans;
}

Python:

def largeGroupPositions(self, s: str) -> List[List[int]]:
    ans = []
    left = 0  # 相同字符串左边边界
    length = len(s)
    while left < length:
        count = 1  # 相同字符串的长度
        # 统计相同字符串的长度
        while left + count < length and s[left] == s[left + count]:
            count += 1
        # 如果长度大于等于3,就把他加入到res中
        if count >= 3:
            ans.append([left, left + count - 1])
        # 更新下一个字符串的左边边界
        left += count
    return ans

f95f060d341f915cb865207a7e43e9c8.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、付费专栏及课程。

余额充值