题,描述:
给定一个字符串列表’strlist’和整数‘k’
请编写函数‘func’, 它返回字符串列表中‘k’个相邻字符串中最长的第一个
实例:
func([“this”, “is”, “an”, “example”], 1) --> “example”
func([“this”, “is”, “another”, “example”], 1) --> “another”
func([“this”, “is”, “another”, “example”], 2) --> “anotherexample”
假设字符串列表的长度为’n’, 如果’n =0’ 或 ‘k>n’ 或’k <=0’ 则反馈空字符串
实例:
func([], 1) --> “”
func([“this”, “is”, “an”, “example”], 5) --> “”
func([“this”, “is”, “an”, “example”], 0) --> “”
def func(strlist, k):
your code
pass
class DefaultTestCase(unittest.TestCase):
def test_func(seltf):
self.assertEqual(func(["this", "is", "an", "example"], 1), "example")
self.assertEqual(func(["this", "is", "another", "example"], 1), "another")
self.assertEqual(func(["this", "is", "another", "example"], 2), "anotherexample")
实现
实现思路
- 根据k的大小,基于strlist,重新获取一个strlist_new – 满足k个相邻的条件
比如,
k=1,获取的新数组是[‘this’, ‘is’, ‘an’, ‘example’]
k=2,获取的新数组是[‘thisis’, ‘isanother’, ‘anotherexample’]
k=3,获取的新数组是[‘thisisan’, ‘isanexample’] - 对新数组strlist_new,以strlist_new列表元素的长度为参考,对strlist进行排序进行冒泡排序 – 满足长度最长的一个
- 用max函数取出排序后长度最长的元素 – 可以取出第一个最长的字符串
具体代码,如下:
new_lst
获取新数组strlist_new
def new_lst(strlist, k):
n = len(strlist)
strlist_new = []
for i in range(n-k+1):
str_temp = ''
for j in range(k):
str_temp = str_temp+strlist[i+j]
strlist_new.append(str_temp)
print strlist_new
return strlist_new
对新数组进行冒泡排序,并返回列表中最长的字符长的第一个
def func(strlist, k):
strlist = new_lst(strlist, k)
n = len(strlist)
if n==0 or k>n or k<=0:
return ''
for i in range(n-1):
for j in range(n-1-i):
if len(strlist[j]) > len(strlist[j+1]):
strlist[j], strlist[j+1] = strlist[j+1], strlist[j]
return max(strlist, key=len)
test case
class DefaultTestCase(unittest.TestCase):
def test_func(self):
self.assertEqual(func(["this", "is", "an", "example"], 1), "example")
self.assertEqual(func(["this", "is", "another", "example"], 1), "another")
self.assertEqual(func(["this", "is", "another", "example"], 2), "anotherexample")
self.assertEqual(func([], 1), "")
self.assertEqual(func(["this", "is", "an", "example"], 5), "")
self.assertEqual(func(["this", "is", "an", "example"], 0), "")
self.assertEqual(func(["aaaaaaaa", "bbbbbbbb", "c", "dddddddddd", "ee"], 0), "")
self.assertEqual(func(["aaaaaaaa", "bbbbbbbb", "c", "dddddddddd", "ee"], 1), "dddddddddd")
self.assertEqual(func(["aaaaaaaa", "bbbbbbbb", "c", "dddddddddd", "ee"], 2), "aaaaaaaabbbbbbbb")
test
if __name__=='__main__':
# new_lst(["this", "is", "an", "example"],1 )
# new_lst(["this", "is", "an", "example"],2 )
# new_lst(["this", "is", "an", "example"],3 )
# print func(["this", "is", "an", "example"], 1)
# print func(["this", "is", "another", "example"], 1)
# print func(["this", "is", "another", "example"], 2)
# test_case = DefaultTestCase()
# test_case.test_func()
unittest.main()
结果
ssh://wfq@192.168.174.132:22/home/wfq/python27/bin/python -u /home/wfq/ops/test/bubble_sort.py
['this', 'is', 'an', 'example']
['this', 'is', 'another', 'example']
['thisis', 'isanother', 'anotherexample']
[]
[]
['', '', '', '', '']
['', '', '', '', '', '']
['aaaaaaaa', 'bbbbbbbb', 'c', 'dddddddddd', 'ee']
['aaaaaaaabbbbbbbb', 'bbbbbbbbc', 'cdddddddddd', 'ddddddddddee']
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Process finished with exit code 0
附:点击下载程序脚本
c