当前位置: 首页 > article >正文

每日一题 LCR 114. 火星词典

LCR 114. 火星词典

使用拓扑排序就可以,有一个实例需要考虑特殊情况

class Solution {
public:
    string alienOrder(vector<string>& words) {
        unordered_map<char,unordered_set<char>> graph;
        unordered_map<char,int>  inorder;
        int n = words.size();

        for(int i=0;i<n;++i){
                for(int k=0;k<words[i].size();++k){
                    inorder[words[i][k]] = 0;
                }
        }

        bool special = true;
        //建图
        for(int i=0;i<n;++i){
            for(int j=i+1;j<n;++j){
                special = true;
                for(int k=0;k<min(words[i].size(),words[j].size());++k){
                    
                    if(words[i][k] != words[j][k]){
                        if(!graph[words[i][k]].count(words[j][k])){
                            graph[words[i][k]].insert(words[j][k]);
                        
                            inorder[words[j][k]]++;
                        }
                        special = false;
                        break;

                    }
                }
                if(special && words[i].size() > words[j].size()){
                    return "";
                }
            }
        }


        queue<char> que;
        for(auto [u,v]:inorder){
            if(v == 0){
                que.push(u);
            }
        }
        string ret = "";
        while(!que.empty()){
            auto t = que.front();
            que.pop();
            ret = ret + t;
            for(auto e : graph[t]){
                inorder[e]--;
                if(inorder[e] == 0){
                    que.push(e);
                }
            }
        }
        if(ret.size() != inorder.size()){
            return "";
        }
        return ret;
    }
};

http://www.kler.cn/a/428410.html

相关文章:

  • Formality:不可读(unread)的概念
  • 简洁实用的wordpress外贸模板
  • 前端开发中的模拟后端与MVVM架构实践[特殊字符][特殊字符][特殊字符]
  • WordPress果果对象存储插件
  • Effective C++读书笔记——item22(明确变量的作用域和访问权限)
  • Ubuntu如何安装redis服务?
  • C#里怎么样使用where方法2?
  • 常见的 CSS 对齐方式介绍及代码示例
  • ros项目dual_arm_pick-place(编辑已有的moveit配置助手包)
  • 云数据库 HBase
  • Linux:软硬链接
  • 认识自定义协议
  • 英语写作中“错误”mistake error的用法
  • 企业级包管理器之 npm 回顾 (2)
  • 微信小程序,引用字体图标的渲染问题
  • 【SKFramework框架核心模块】3-6、FSM有限状态机模块
  • 菜鸟每日刷牛客NP39
  • mysql怎么获取当前日期
  • 101种美食-图像分类数据集
  • 电源的串并联
  • 【MsSQL】数据库基础 库的基本操作
  • Unity热更新 之 Addressables(1) 资源基础加载
  • Vue CLI的作用
  • 关于HTTP DEBUGGER PRO的DURATION列一点理解
  • 在Linux(ubuntu22.04)搭建rust开发环境
  • Java-19 深入浅出 MyBatis - 用到的设计模式 源码剖析 代理设计模式