python 单词倒排
题目:
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836?tpId=37&tqId=21254&rp=1&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking&tab=answerKey
代码:
1 ''' 2 3 题目描述 4 对字符串中的所有单词进行倒排。 5 6 说明: 7 1、构成单词的字符只有26个大写或小写英文字母; 8 2、非构成单词的字符均视为单词间隔符; 9 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 10 4、每个单词最长20个字母; 11 输入描述: 12 输入一行以空格来分隔的句子 13 14 输出描述: 15 输出句子的逆序 16 17 示例1 18 输入 19 I am a student 20 输出 21 student a am I 22 ''' 23 import re 24 25 n = input() 26 nNew = re.sub(u"([^\u0041-\u005a\u0061-\u007a])",' ',n) 27 nNew = nNew.split() 28 nNew = nNew[::-1] 29 s= '' 30 for i in range(len(nNew)-1): 31 s += nNew[i]+' ' 32 s += nNew[-1] 33 print(s)
其中涉及到了正则替换
正则表达式说明
函数 | 说明 |
sub(pattern,repl,string) | 把字符串中的所有匹配表达式pattern中的地方替换成repl |
[^**] | 表示不匹配此字符集中的任何一个字符 |
\u4e00-\u9fa5 | 汉字的unicode范围 |
\u0030-\u0039 | 数字的unicode范围 |
\u0041-\u005a | 大写字母unicode范围 |
\u0061-\u007a | 小写字母unicode范围 |
\uAC00-\uD7AF | 韩文的unicode范围 |
\u3040-\u31FF | 日文的unicode范围 |
参考:cnblogs.com/brady-wang/p/12509676.html