2019/11/03【报数】

【今天只写了一个题目,因为近期公司在周末有培训且解数独这道题脚本比较麻烦】

题目一:【报数】力扣——38

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221
1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

 

示例 1:

输入: 1
输出: "1"
示例 2:

输入: 4
输出: "1211"

#!/bin/bash
#报数
#author:yzt 2019-11-04
#
read -t 20 -p "请输入一个正整数:" num
cat /dev/null >tmp.txt
for((i=1;i<=$num;i++))
do
        if [ $i = 1 ];then
                number=1
                echo "1" >tmp.txt
        else
                number=""
                content=`cat tmp.txt|sed 's#[.]*#\n#g'|grep -v "^$"|uniq -c`
                for j in $content
                do
                        number=$number$j
                done
                echo "$number" >tmp.txt
        fi
done
echo "$number"

脚本解析:

1、此题报数其实是对数字的描述,比如11,即为(两个一)也就是21;而单独一个2为(一个二)也就是12;

2、明白了题目的意思后,笔者构思良久,发现shell中自带的uniq的命令就自带报数的功能

3、脚本关键点有:第一字符串转化为文档的每一行;去掉空行;第二:for循环

 

脚本效果:

[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:1
1
[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:2
11
[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:3
21
[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:4
1211
[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:5
111221
[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:6
312211
[root@localhost leetcode]# ./baoshu.sh
请输入一个正整数:23
11131221131211132221232112111312111213111213211231132132211211131221232112111312211213111213122                        11213211321322112311311222113311213212322211211131221131211132221231122212213211321322112311311                        22211331121321232221123113112221131112311332111213122112311311123112112322211211131221131211132                        22123211211131221132211131221121321131211132221123113112211121312211231131122113221122112133221                        12132113213221133112132123123112111311222112132113311213211231232112311311222112111312211311123                        11332211213211321223112111311222112132113213221123123211231132132211231131122211311123113322112                        11131221131211132221232112111312212321123113112211322112311322111312211213211321321112133221231                        1322113212221

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值