华为机试-HJ4字符串分隔-python实现
描述:
分析
数据结构:不需要,直接输出就行
解题思路:
先找相同:不论是什么长度的字符串,都要按照长度为8打印。
——>也就是说,除了补零的,统一按照长度为8输出
再找不同:补0个数不同。
——>让ljust函数自己判断需要补多少个零。
参考代码
笨蛋(bushi)解法:
while True:try:inputString = input()stringLength = len(inputString)len8mod = stringLength % 8len8div = stringLength // 8# 取余不等于0的情况(长度小于8,或者大于8但不是8的倍数),# 补零(补到原长度下一个8的倍数)if len8mod != 0:inputString = inputString.ljust(8 * (len8div + 1), "0")for i in range(len8div + 1):print(inputString[8 * i : 8 * (i + 1)])except:break
虽然能ac,但是这种解法时间和空间占用不是很理想
高级解法:
while True:try: s=input() while len(s)>8: print(s[:8]) s=s[8:] print(s.ljust(8,"0")) #ljust自己判断需要补多少个零except:break
高级解法的时间占用为上一个解法的5分之一。
反思
对题目的思考不够,应该多看多对比。