华为机试 HJ-4 字符串分割 题解

题目描述

  • 连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
  • 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(输入多次,每个字符串长度小于100)

输出描述:

输出到长度为8的新字符串数组

示例1

abc
123456789

输出

abc00000
12345678
90000000

思路

  • 首先确认一点,多行输入,所以每一行是一个流程(一轮循环)
  • 模仿字符流的形式,每8个字符输出为一行
    • 则行内应该有计数器,每输出8个字符重置一次
    • 到达最后一行但是不满一行的情况根据计数器补0
import sys
for line in sys.stdin.readlines():
    len_str=len(line)-1
    counter=0
    pre_str=''
    for i in range(0,len_str):
        #print(str(i)+':')
        if counter<8:
            if i==len_str-1:
                pre_str+=line[i]
                pre_str+='0'*(8-counter-1)
                print(pre_str)
                break
            else:pre_str+=line[i]
            counter+=1
        if counter==8:
            print(pre_str)
            counter=0
            pre_str=''
  • 另一种思路就是正常的字符串分割
import sys
for line in sys.stdin.readlines():
    line=line.replace('\n','')
    len_str=len(line)
    if len_str>8:
        num_row=int(len_str/8)
        if(len_str%8!=0):num_row+=1
        for i in range(0,num_row):
            if(8*(i+1)<=len_str):
                print(line[i*8:(i+1)*8])
            else : print(str(line[i*8:len_str])+str('0'*(8-len_str%8)))
    else:print(str(line)+('0'*(8-len_str)))

猜你喜欢

转载自blog.csdn.net/qq_42739587/article/details/114783391