分词

Don’t fear failure. Be afraid of not having the chance. ——《赛车总动员》

不要害怕失败,而应该害怕没有机会。

问题

  让函数 WordSplit(strArr) 读取存储在 strArr 中的字符串数组,该数组将包含2个元素:第一个元素将一个字符串,第二个元素是一个由逗号分隔的长字符串。例如:strArr 可以是:[“hellocat”, “apple,bat,cat,goodbye,hello,yellow,why”]。您的目标是确定输入中的第一个元素是否可以分为两个词,其中两个词都存在于第二个长字符串中。在此示例中,第一个元素可以分为两个词:hellocat 因为这两个词都在长字符串中。

  您的程序应返回长字符串中存在的两个单词,并用逗号分隔。因此,对于上面的示例,您的程序应返回hello,cat。只有一种正确的方法将字符的第一个元素分成两个单词。如果无法将字符串分成长字符串中存在的两个单词,则返回字符串 not possible 。第一个元素本身永远不会在长字符串中作为真实单词存在。

例子

1
2
输入:["baseball", "a,all,b,ball,bas,base,cat,code,d,e,quit,z"]
输出:base,ball
1
2
输入:["abcgefd","a,ab,abc,abcg,b,c,dog,e,efd,zzzz"]
输出:abcg,efd

代码

1
2
3
4
5
6
7
8
9
10
11
12
def WordSplit(strArr):
word = strArr[0]
l_word = list(strArr[1].split(','))
for i in range(len(l_word)):
for j in range(len(l_word)):
if l_word[i] + l_word[j] == word:
return ','.join([l_word[i], l_word[j]])
else:
return 'not possible'


print(WordSplit(["hellocat", "apple,bat,cat,goodbye,hello,yellow,why"]))

输出:

1
>>> hello,cat

思路

  通过问题描述以及实例可以了解到,返回的单词能且只能是两个。所以,创建两个循序让长字符串中的任意两个单词进行拼接,让拼接的结果去和 strArr 中第一个元素判定是否相等。如果相等返回找到的两个单词。否则返回字符串 not possible

PS: 如果您发现文中有错误、思路不够清晰等问题或者您有更优解,都可以在下方留言!!!