LeetCode题练习与总结:第十行--195

57 篇文章 0 订阅
4 篇文章 0 订阅

一、题目描述

给定一个文本文件 file.txt,请只打印这个文件中的第十行。

示例:

假设 file.txt 有如下内容:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

你的脚本应当显示第十行:

Line 10

二、解题思路

  1. 使用Bash脚本读取文件内容。
  2. 利用循环和计数器遍历文件的每一行。
  3. 当计数器达到10时,输出当前行,并退出循环。

三、具体代码

#!/bin/bash

# 初始化行号计数器
line_number=0

# 读取文件file.txt的每一行
while read line
do
  # 行号计数器加1
  ((line_number++))
  
  # 当行号等于10时,输出当前行并退出循环
  if [ $line_number -eq 10 ]; then
    echo $line
    break
  fi
done < file.txt

四、时间复杂度和空间复杂度

1. 时间复杂度
  • 时间复杂度通常用来描述算法执行的时间与输入数据量之间的关系。
  • 在这个脚本中,时间复杂度是 O(n),其中 n 是文件 file.txt 中的行数。
  • 这是因为脚本需要遍历文件中的每一行,直到找到第十行为止。在最坏的情况下,如果第十行是文件的最后一行,或者文件有超过十行,脚本将需要读取整个文件。
  • 每次读取一行,然后行号计数器加一,这是一个线性的操作,所以整体的时间复杂度是线性的。
2. 空间复杂度
  • 空间复杂度通常用来描述算法执行过程中临时占用存储空间的大小与输入数据量之间的关系。
  • 在这个脚本中,空间复杂度是 O(1),也就是常数空间复杂度。
  • 这是因为脚本在执行过程中只使用了固定数量的变量:line_number 和 line。这些变量不依赖于文件的大小,它们的大小在整个执行过程中保持不变。
  • 脚本没有使用任何额外的数据结构(如数组或哈希表)来存储文件中的行,它只是逐行读取文件内容,因此占用的空间不随输入文件的大小而变化。

总结:

  • 时间复杂度:O(n),其中 n 是文件的行数。
  • 空间复杂度:O(1),不随文件大小变化。

五、总结知识点

  1. Shebang(#!/bin/bash):这行指示脚本应该使用哪个解释器来执行。在这个例子中,它指定了使用 /bin/bash 作为解释器。

  2. 变量声明和初始化:line_number=0 初始化了一个名为 line_number 的变量,并将其设置为0。

  3. 循环结构(while循环):while read line 是一个循环结构,用于逐行读取输入直到输入结束。在这个例子中,它读取 file.txt 文件的内容。

  4. 计数器操作:((line_number++)) 是一个算术扩展,用于递增 line_number 变量的值。

  5. 条件判断:if [ $line_number -eq 10 ]; then 是一个条件判断结构,用于检查 line_number 变量是否等于10。

  6. 字符串输出:echo $line 是用于输出字符串到标准输出的命令。在这里,它输出读取到的当前行。

  7. 控制流语句(break):break 是一个控制流语句,用于立即退出当前的循环。

  8. 重定向操作符:< file.txt 是一个重定向操作符,用于将 file.txt 文件的内容作为 while 循环的输入。

以上就是解决这个问题的详细步骤,希望能够为各位提供启发和帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一直学习永不止步

谢谢您的鼓励,我会再接再厉的!

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

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

打赏作者

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

抵扣说明:

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

余额充值