当前位置: 技术问答>linux和unix
百度笔试题——SHELL
来源: 互联网 发布时间:2016-02-29
本文导语: 如何把两个文件中相同的单词,去除掉。 | 我大概说说看我的想法,也许不是最优,权当抛砖引玉了! 先考虑两个文件自身没有相同单词的情况~~~ 第一步,分别读文件,挑出单词,将每个单词作为...
如何把两个文件中相同的单词,去除掉。
|
我大概说说看我的想法,也许不是最优,权当抛砖引玉了!
先考虑两个文件自身没有相同单词的情况~~~
第一步,分别读文件,挑出单词,将每个单词作为一个数组成员存入数组,可以通过检查字符的ASCII值是否在65~90和97~122之间找出空格和逗号之类可以区分单词的字符(同时这里需要将65~90之间的大写字母的ASCII值全部+32变成小写字母);
第二步,对2个字符串数组分别进行从小到大排序,用strcmp函数和冒泡可以实现;
第三步,从第一个成员开始比较2个数组,如果str1[0]比str2[0]大,那么str1[0]再与str2[1]比较,反之则str1[1]与str[0]比较,如果2个成员相等则删除;
简单起见:
char str1[],str2[];
int i=0,j=0;
/*前面读文件挑单词时已知str1[]成员数量为m,str2[]成员数量为n*/
for ( ;i>lwp1
done
>lwp2
for b in $(cat B)
do
echo $b>>lwp2
done
>comf
for c in $(cat lwp1)
do
for d in $(cat lwp2)
do
if [ "$c" = "$d" ]
then echo $c>>comf
fi
done
done
>ptf1
>ptf2
diff lwp1 comf|grep ">>> A "
echo "ptf2 ---->>>> B "
先考虑两个文件自身没有相同单词的情况~~~
第一步,分别读文件,挑出单词,将每个单词作为一个数组成员存入数组,可以通过检查字符的ASCII值是否在65~90和97~122之间找出空格和逗号之类可以区分单词的字符(同时这里需要将65~90之间的大写字母的ASCII值全部+32变成小写字母);
第二步,对2个字符串数组分别进行从小到大排序,用strcmp函数和冒泡可以实现;
第三步,从第一个成员开始比较2个数组,如果str1[0]比str2[0]大,那么str1[0]再与str2[1]比较,反之则str1[1]与str[0]比较,如果2个成员相等则删除;
简单起见:
char str1[],str2[];
int i=0,j=0;
/*前面读文件挑单词时已知str1[]成员数量为m,str2[]成员数量为n*/
for ( ;i>lwp1
done
>lwp2
for b in $(cat B)
do
echo $b>>lwp2
done
>comf
for c in $(cat lwp1)
do
for d in $(cat lwp2)
do
if [ "$c" = "$d" ]
then echo $c>>comf
fi
done
done
>ptf1
>ptf2
diff lwp1 comf|grep ">>> A "
echo "ptf2 ---->>>> B "
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。