shell中如何判断颠倒词?

请教大家一个问题,shell里面怎么判断两个词是否是颠倒词?

颠倒词的定义是:
字数相等,所有字都相同,字的顺序可以不一样

比如:
'2016研发CPU'
'2016CPU研发'

在python里面我是这么判断的

A='2016研发CPU'
B='2016CPU研发'

if A != B and len(A) == len(B) and sorted(A) == sorted(B):
    print('Y')
else:
    print('N')

请问在shell中该如何实现呢?

阅读 2.5k
2 个回答

将两个字符串做升序排序,如果排序的结果完全相同就是,否则就不是。

经评论和答案提醒,想到实现方式了,另外还发现了自己之前判断方式的疏漏,非常感谢大家

Python中更简便的实现方式为

if A != B and sorted(A) == sorted(B):
        print('Y')
    else:
        print('N')

shell中同样的思路,先排序再对比,但是要先把字符串进行拆分,具体见代码

if [[ `echo $A | sed 's/./&\n/g' | sort` == `echo $B | sed 's/./&\n/g' | sort` ]]
then
    echo Y
else
    echo N
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进