Python 这是肾盂病吗?什么是肾盂病?注意:我的解决方案通过了所有测试用例
问题:Python 这是肾盂病吗?什么是肾盂病?注意:我的解决方案通过了所有测试用例,python,Python,问题: def remove_duplicates(string): no_dups = list(set(string)) no_dups.sort() total_dups = len(string) - len(no_dups) return "".join(no_dups), total_dups 编写一个名为remove_duplicates的函数,该函数将接受一个名为string的参数。 此字符串输入将仅包含a-z之间的字符,并且应删除字符串中所有重
def remove_duplicates(string):
no_dups = list(set(string))
no_dups.sort()
total_dups = len(string) - len(no_dups)
return "".join(no_dups), total_dups
编写一个名为remove_duplicates的函数,该函数将接受一个名为string的参数。
此字符串输入将仅包含a-z之间的字符,并且应删除字符串中所有重复的字符
返回具有两个值的元组:
仅包含唯一排序字符的新字符串。
删除的重复项的总数
示例:
def remove_duplicates(string):
no_dups = list(set(string))
no_dups.sort()
total_dups = len(string) - len(no_dups)
return "".join(no_dups), total_dups
删除重复项('aaabbbac')=>('abc',5)
我的解决方案:
def remove_duplicates(string):
no_dups = list(set(string))
no_dups.sort()
total_dups = len(string) - len(no_dups)
return "".join(no_dups), total_dups
测试用例强>
import unittest;
class Test(unittest.TestCase):
def test_output_is_correct(self):
result1 = remove_duplicates('aaabbbac')
result2 = remove_duplicates('a')
result3 = remove_duplicates('thelexash')
self.assertIsInstance(result1, tuple, msg='Incorrect output type')
self.assertEqual(result1, ('abc', 5), msg='Incorrect output')
self.assertIsInstance(result2, tuple, msg='Incorrect output type')
self.assertEqual(result2, ('a', 0), msg='Incorrect output')
self.assertIsInstance(result3, tuple, msg='Incorrect output type')
self.assertEqual(result3, ('aehlstx', 2), msg='Incorrect output')
def test_output_is_correct_hidden(self):
result1 = remove_duplicates('thisisateststring')
result2 = remove_duplicates('letsseehowthisgoes')
result3 = remove_duplicates('hiddenhiddenhiddenhaha')
self.assertIsInstance(result1, tuple, msg='Incorrect output type')
self.assertEqual(result1, ('aeghinrst', 8), msg='Incorrect output')
self.assertIsInstance(result2, tuple, msg='Incorrect output type')
self.assertEqual(result2, ('eghilostw', 9), msg='Incorrect output')
self.assertIsInstance(result3, tuple, msg='Incorrect output type')
self.assertEqual(result3, ('adehin', 16), msg='Incorrect output')
虽然我可能会这样写,但对于我的口味来说,Pythonic已经足够了:
def remove_duplicates(string):
no_dups = ''.join(sorted(set(string)))
return (no_dups, len(string) - len(no_dups))
您可以通过调用
sorted(set(string))
来剪切额外的list()
。