首页 > 代码库 > shell脚本实现检测回文字符串
shell脚本实现检测回文字符串
所有回文字的结构特征如下:
如果字符数是偶数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列。
如果字符数为奇数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列,但是这两个序列中间共享一个相同的字符。
sed命令能够记住之前匹配的子样式。可以用正则表达式:‘\(.\)‘,匹配任意一个字符,\1表示其反向引用。如匹配有两个字符的回文正则表达式为:
‘\(.\)\(.\)\2\1‘
匹配任意长度的回文脚本如下所示:
#!/bin/bash #file name: match_palindrome.sh #function: find palindrome in a file. if [ $# -ne 2 ] then echo "Usage: $0 filename string_length" exit -1 fi filename=$1 basepattern='/^\(.\)' count=$(( $2/2 )) # matche certain length for ((i=1; i < $count; i++)) do basepattern=$basepattern'\(.\)'; done # the length is even if [ $(( $2 % 2)) -ne 0 ] then basepattern=$basepattern'.'; fi for ((count; count > 0; count--)) do basepattern=$basepattern'\'"$count"; done echo "debug: $basepattern" # print the result basepattern=$basepattern'$/p' sed -n "$basepattern" $filename
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。