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

Linux的习题+一道回溯类型的算法题

Linux的习题

在这里插入图片描述

Linux环境与版本

1.linux 2.6.* 内核默认支持的文件系统有哪些?[多选]

A.ext3

B.ext2

C.ext4

D.xfs

E.ufs
正确答案:ABCD
A 全称Linux extended file system, extfs,即Linux扩展文件系统,ext2为第二代

D XFS一种高性能的日志文件系统,2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux 内核上。XFS 特别擅长处理大文件,同时提供平滑的数据传输

E UFS是UNIX文件系统的简称,它来源于4.3Tahoe发行版中提供的BSD Fat Fast File System(FFS)系统,属于FFS的演化版本

2.以下哪个命令输出Linux内核的版本信息:

A.uname -r

B.vmstat

C.sar

D.stat

正确答案:A

uname -r 查看linux内核版本信息

vmstat 报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息

sar 主要帮助我们掌握系统资源的使用情况,特别是内存和CPU的使用情况

stat 用于显示文件的状态信息

3.Linux 有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令。

A.cat

B.more

C.less

D.menu

正确答案:C

A cat 打印文件内容到终端显示

B more 分页显示文件内容,但是通常向上翻页不好使

C less 分页显示文件内容,可以灵活上下移动光标和翻页

D menu 没有这个指令(至少centos7上默认没有这个命令)

4.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是

A.-m

B.-d

C.-f

D.-p

正确答案:D

A -m 在创建目录的同时设置权限

B -d 没有这个选项

C -f 没有这个选项

D -p 在创建多层级目录的时候若上级目录不存在则创建

5.在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?

A.grep -E #$ try_grep

B.grep -E #a try_grep

C.grep -E ^$ try_grep

D.grep -E ^a try_grep

正确答案:D

grep选项中,-E选项可以用来扩展选项为正则表达式;

 $ 表示匹配文件末尾,字符需要在 $ 之前表示以字符结尾 a$表示以a结尾

表示匹配文件起始,字符需要在之后表示以字符起始 ^a表示以a起始

6.linux查看cpu占用的命令是什么?

A.top

B.netstat

C.free

D.df

正确答案:A

A top 查看cpu资源使用状态

B netstat 查看网络连接状态

C free 查看内存资源状态

D df 查看磁盘分区资源状态

7.批量删除当前目录下后缀名为.c的文件。如a.c、b.c。

A.rm *.c

B.find . -name “*.c” -maxdepth 1 | xargs rm

C.find . -name “*.c” | xargs rm

D.以上都不正确

正确答案:AB

A rm *.c *通配符,表示匹配任意字符任意次

B find . -name “*.c” -maxdepth 1 | xargs rm

find . -name “*.c” -maxdepth 1 找到当前目录下.*结尾的文件,目录深度为1

xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,用于很多不支持|管道来传递参数的命令

​ 相当于将前边命令的执行结果,也就是查找到的文件名,传递给后边的rm指令进行删除

C find . -name “*.c” | xargs rm 没有进行深度控制,删除的不仅是当前目录下的文件,会将子目录下的文件也删除

D 以上都不正确

电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

img

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

提示:

  • 0 <= digits.length <= 4
  • digits[i] 是范围 ['2', '9'] 的一个数字。

题目解析:
在这里插入图片描述
讲解算法原理:
在这里插入图片描述
解法:**

算法思路:

每个位置可选择的字符与其他位置并不冲突,因此不需要标记已经出现的字符,只需要将每个数字对 应的字符依次填⼊字符串中进⾏递归,在回溯是撤销填⼊操作即可。

在递归之前我们需要定义⼀个字典 hash,记录 2~9 各⾃对应的字符。

递归函数设计:void backtrack(unordered_map& phoneMap, string& digits, int index)

参数:index (已经处理的元素个数),ans (字符串当前状态),res (所有成⽴的字符串);

返回值:⽆

函数作⽤:查找所有合理的字⺟组合并存储在答案列表中。

递归函数流程如下:

  1. 递归结束条件:当 index 等于 digits 的⻓度时,将 ans 加⼊到 res 中并返回;
  2. 取出当前处理的数字 digit,根据 phoneMap 取出对应的字⺟列表 letters;
  3. 遍历字⺟列表 letters,将当前字⺟加⼊到组合字符串 ans 的末尾,然后递归处理下⼀个数字(传 ⼊ index + 1,表⽰处理下⼀个数字);
  4. 递归处理结束后,将加⼊的字⺟从 ans 的末尾删除,表⽰回溯。
  5. 最终返回 res 即可。
class Solution {
public:
    string hash[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    string path;
    vector<string> ret;
    vector<string> letterCombinations(string digits) {
        //判断是否有元素,如果元素为0,返回空的ret
        if(digits.size()==0) return ret;
        //如果是0或者1,返回空的ret
        dfs(digits,0); return ret;
    }
        //引用返回,减少时间复杂度
        void dfs(string&digits,int pos)
        {
        //如果递归到底,往path里面进行尾插元素,并返回
        if(pos==digits.size())
        {
            ret.push_back(path);
            return;
        }
        //如果还未到底,继续递归,得到下标要ASCLL减去字符‘0’的ASCLL值
        for(auto ch :hash[digits[pos]-'0'])
        {
            //尾插
            path.push_back(ch);
            //往下递归
            dfs(digits,pos+1);
            path.pop_back();
        //恢复现场
        }
        }
    
};

http://www.kler.cn/news/353614.html

相关文章:

  • 数据结构--链表
  • Java 类和对象详解(上 )
  • 关于通信协议中PDCP的相关知识
  • WPF 已知问题 在 ObservableCollection 的 CollectionChanged 修改集合内容将让 UI 显示错误...
  • 【开源物联网平台】Fastbee系统稳定性和压测报告
  • Android 自定义Toast显示View
  • 【MySQL】数据库基础指令(一)
  • FlinkCDC 实现 MySQL 数据变更实时同步
  • jvm垃圾收集器简介
  • Ability内页面的跳转和数据传递(router和want显/隐跳转)
  • 美客多产品没流量?不要只看广告!
  • mysql高级sql语句 二
  • Python中的help()函数:追踪错误并提供解决方案
  • JDK、JRE、JVM相关知识点
  • 626,换座位
  • 简述Linux和RTOS
  • DAPLINK 之 RTT 输出日志
  • Java洗车保养不出门上门服务一键享上门洗车保养维修系统小程序源码
  • YOLO模型在不同光照条件下的检测性能如何优化?
  • 红日安全vulnstack (二)