2025-10-19 学习日记

发布于 2025-10-19 12:00 532 字 3 min read 手写 每个字都是我自己敲的。

2025-12-24 学习日记2025-12-17 学习日记2025-12-14 学习日记2025-12-09 学习日记2025-12-08 学习日记2025-12-07 学习日记2025-12-06 学习日记2025-12-05 学习日记2025-12-04 学习日记2025-12-03 学习日记2025-12-02 学习日记2025-12-01 学习日记2025-11-30 学习日记2025-11-29 学习日记2025-11-28 学习日记2025-11-27 学习日记2025-11-26 学习日记2025-11-25 学习日记2025-11-24 学习日记2025-11-23 学习日记2025-11-22 学习日记2025-11-21 学习日记2025-11-20 学习日记2025-11-19 学习日记2025-11-18 学习日记2025-11-17 学习日记2025-11-16 学习日记2025-11-15 学习日记2025-11-14 学习日记2025-11-13 学习日记2025-11-12 学习日记2025-11-11 学习日记2025-11-10 学习日记2025-11-09 学习日记2025-11-08 学习日记2025-11-07 学习日记2025-11-06 学习日记2025-11-05 学习日记2025-11-04 学习日记2025-11-03 学习日记2025-11-02 学习日记2025-11-01 学习日记2025-10-31 学习日记2025-10-30 学习日记2025-10-29 学习日记2025-10-28 学习日记2025-10-27 学习日记2025-10-26 学习日记2025-10-25 学习日记2025-10-24 学习日记2025-10-23 学习日记2025-10-22 学习日记2025-10-21 学习日记2025-10-20 学习日记2025-10-19 学习日记2025-10-18 学习日记2025-10-17 学习日记2025-10-16 学习日记2025-10-15 学习日记2025-10-14 学习日记2025-10-13 学习日记2025-10-11 学习日记2025-10-10 学习日记2025-10-09 学习日记2025-10-03 学习日记2025-10-02 学习日记2025-10-01 学习日记2025-09-30 学习日记2025-09-29 学习日记2025-09-28 学习日记2025-09-27 学习日记2025-09-26 学习日记2025-09-25 学习日记2025-09-24 学习日记2025-09-23 学习日记2025-09-22 学习日记2025-09-21 学习日记2025-09-20 学习日记2025-09-18 学习日记2025-09-17 学习日记2025-09-16 学习日记2025-09-15 学习日记2025-09-14 学习日记2025-09-13 学习日记2025-09-12 学习日记2025-09-11 学习日记2025-09-10 学习日记2025-09-09 学习日记2025-09-08 学习日记2025-09-04 学习日记2025-09-03 学习日记2025-09-02 学习日记2025-09-01 学习日记2025-08-31 学习日记2025-08-29 学习日记2025-08-28 学习日记2025-08-27 学习日记2025-08-26 学习日记2025-08-25 学习日记2025-08-24 周记2025-08-23 学习日记2025-08-22 学习日记2025-08-21 学习日记2025-08-20 学习日记2025-08-19 学习日记2025-08-18 学习日记2025-08-17 周记2025-08-16 学习日记2025-08-15 学习日记2025-08-14 学习日记2025-08-13 学习日记2025-08-12 学习日记2025-08-11 学习日记
今日学习记录 1. 3720. 大于目标字符串的最小字典序排列 关键词: 问题分析: 给两个字符串 s1,s2,要求把 s1 变成字典序严格大于 s2 的最小字符序列 核心思路: 字典序爆搜+回溯 第一眼看到最大的最小以为是二分,但是这个题字符串不能像二分那样找到对应的中间值,再就是暴力模拟了,搜集 s1 的字符,进行排序,从 s2 的第一个 *最终代码:

今日学习记录

1. 3720. 大于目标字符串的最小字典序排列

关键词:dfs 问题分析: 给两个字符串 s1,s2,要求把 s1 变成字典序严格大于 s2 的最小字符序列

核心思路:

字典序爆搜+回溯

第一眼看到最大的最小以为是二分,但是这个题字符串不能像二分那样找到对应的中间值,再就是暴力模拟了,搜集 s1 的字符,进行排序,从 s2 的第一个

**最终代码:

int n = s.size();

        vector<int> cnt(26);

        for(char &c:s) cnt[c-'a']++;

        string ans = "";

        auto dfs = [&](this auto&& dfs,int i,string &str)->bool{

            if(i==n){

                if(str>target){

                    ans = str;

                    return true;

                }

                return false;

            }

            if(cnt[target[i]-'a']>0){

                cnt[target[i]-'a']--;

                str += target[i];

                if(dfs(i+1,str)) return true;

                str.pop_back();

                cnt[target[i]-'a']++;

            }

            for(char c = target[i]+1;c<='z';c++){

                if(cnt[c-'a']>0){

                    string temp = str;

                    temp += c;

                    cnt[c-'a']--;

                    for(int i = 0;i<26;i++){

                        for(int j = 0;j<cnt[i];j++){

                            temp += 'a'+i;

                        }

                    }

                    cnt[c-'a']++;

                    ans = temp;

                    return true;

                }

            }

            return false;

        };

        string arr = "";

        dfs(0,arr);

        return ans ;

    }

学到的点: 1.


执笔 手写

随机文章

加载中...