题解 | #字符串分隔#

字符串分隔

https://www.nowcoder.com/practice/d9162298cb5a437aad722fccccaae8a7

import re

def str_split(input_str):
    # 使用正则表达式找到所有8个字符长度的匹配项
    if len(input_str) >= 8:
       list_of_str = re.findall(r'.{8}', input_str)
    
    # 检查最后一个字符串的长度,如果不是8的倍数,补齐0
       if len(input_str) % 8 != 0:
          # 剩余字符的数量
          remaining_chars = len(input_str) % 8
        # 剩余字符的起始索引
          start_index = len(input_str) - remaining_chars
        # 将剩余的字符添加到列表中,并确保它们是8个字符长
          list_of_str.append(input_str[start_index:].ljust(8, "0"))
          list_of_str[-1] = list_of_str[-1].ljust(8, "0")
    # 使用换行符连接所有字符串
          return '\n'.join(list_of_str)
       elif len(input_str) % 8 == 0:
          list_of_str = re.findall(r'.{8}', input_str)
          return '\n'.join(list_of_str)
    else:
        return input_str.ljust(8,"0")

if __name__ == '__main__':
    input_str = str(input())
    assert len(input_str) <= 100
    res = str_split(input_str)
    # 打印结果,每个8个字符的字符串依次换行输出
    print(res)

调了一小时,思路是这样的,str长度分为大于等于8和小于8,第一种情况下,看他能不能取余数为零,若可以,将列表结果换行输出,若余数不为零,则先将可以取到的8位字符串放入列表中(re.findal(r'.{8}',input_str)),之后再从上次取完8位字符串的起始位开始取数,并补齐0,用ljust方法

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
牛客618272644号:佬携程工作怎么样,强度大吗
点赞 评论 收藏
分享
10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务