请编写函数‘func’, 它返回字符串列表中‘k’个相邻字符串中最长的第一个 - 冒泡排序

题,描述:

给定一个字符串列表’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")

实现

实现思路

  1. 根据k的大小,基于strlist,重新获取一个strlist_new – 满足k个相邻的条件
    比如,
    k=1,获取的新数组是[‘this’, ‘is’, ‘an’, ‘example’]
    k=2,获取的新数组是[‘thisis’, ‘isanother’, ‘anotherexample’]
    k=3,获取的新数组是[‘thisisan’, ‘isanexample’]
  2. 对新数组strlist_new,以strlist_new列表元素的长度为参考,对strlist进行排序进行冒泡排序 – 满足长度最长的一个
  3. 用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值