题解 | #字符串分隔#

字符串分隔

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

题意整理。

  • 连续输入字符串。
  • 按长度为8拆分字符串并输出。

方法一(字符串截取)

1.解题思路

  • 对于每一个字符串,只要长度大于等于8,就一直做截取操作,截取的长度为8。
  • 如果长度小于8,则在后面补0。直到处理完所有的字符。

图解展示: alt

2.代码实现

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        //标准输入
        Scanner sc=new Scanner(System.in);   
        while(sc.hasNext()){
            //输入字符换
            String s=sc.nextLine();
            //只要长度大于等于8,则按长度8一段一段的截取
            while(s.length()>=8){
                System.out.println(s.substring(0,8));
                s=s.substring(8);
            }
            //如果长度还大于0,则在后面补8个0,继续截取前8位并输出
            if(s.length()>0){
                s=s+"00000000";
                System.out.println(s.substring(0,8));
            }
        }
    }
}

3.复杂度分析

  • 时间复杂度:每次substring操作,需要遍历8个字符进行截取,完成所有substring操作需要遍历整个字符串,所以时间复杂度为O(n)O(n)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)

方法二(使用IO流处理输入)

1.解题思路

思路和方法一相同,不过采用输入流处理输入的字符串。

2.代码实现

import java.io.*;

public class Main{
    public static void main(String[] args){
        //利用BufferedReader接受输入字符串
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        //记录输入字符串
        String s;
        try{
            while((s=br.readLine())!=null){
                //只要长度大于等于8,则按长度8一段一段的截取
                while(s.length()>=8){
                    System.out.println(s.substring(0,8));
                    s=s.substring(8);
                }
                //如果长度还大于0,则在后面补8个0,继续截取前8位并输出
                if(s.length()>0){
                    s=s+"00000000";
                    System.out.println(s.substring(0,8));
                }
            }
        }
        catch(IOException e){
            
        }
        
    }
}

3.复杂度分析

  • 时间复杂度:每次substring操作,需要遍历8个字符进行截取,完成所有substring操作需要遍历整个字符串,所以时间复杂度为O(n)O(n)
  • 空间复杂度:不需要额外的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

27届毕业,最近想找一段大厂实习,感觉简历有些问题,好多都不给面,求大佬们指点,最近好焦虑
重生之我学Java干...:我从后端的角度分析一下你的第一个项目,我感觉亮点不是很突出。因为我是因为组内有需求,临时上手学react干活。我用到的技术基本就cover你那个智慧园区管理平台的很多亮点了。那作为比较专业的前端,你上述的内容是不是有点单薄呢。感觉还得包装
点赞 评论 收藏
分享
看起来名字可以很长:笑死 我暑期实习阿里云的意向也被 qq 邮箱放在垃圾箱了
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
10-20 15:26
门头沟学院 Java
桥头牛油火锅:这个比例不正常,简历的话项目经历放中间,项目功能分点可以再明确点,前面加“·”或者“1 2 3”,另外简历上的照片可以去外面摄影店拍一下,以后也会用到的,hr筛人也是多少会看的,毕竟世界是一个巨大的卡颜局嘛,还有有些hr由于消息太多可能没看到,后面可能会回来找你,要简历的还会多一点,我也是普2本,比例大致是600:90:15:3,当然我实力不太够,拿的offer比较少,慢慢来吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务