码迷,mamicode.com
首页 > 其他好文 > 详细

shell脚本实现检测回文字符串

时间:2014-07-29 22:08:33      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   for   2014   cti   python   size   

所有回文字的结构特征如下:

如果字符数是偶数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列。

如果字符数为奇数,那么它在结构上表现为:一个字符序列连着另一个字符相同但次序恰好相反的字符序列,但是这两个序列中间共享一个相同的字符。

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


shell脚本实现检测回文字符串,布布扣,bubuko.com

shell脚本实现检测回文字符串

标签:style   blog   io   for   2014   cti   python   size   

原文地址:http://blog.csdn.net/wan_hust/article/details/38273941

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!