任务描述

本关任务:字符串压缩。若输入字符串: “aabbbccdaa” ,计算每个连续的字符的个数,并生成一个新的字符串:“a2b3c2d1a2”。

做题之前之前先介绍两个知识点:1.StringBuilder的用法.2.toString方法

StringBuilder是一个字符拼接的工具类,它和StringBuffer一样都继承自父类AbstractStringBuilder,在AbstractStringBuilder中使用char[] value字符数组保存字符串,但是没有用final关键字修饰,所以StringBuilder是可变的。

像这道题涉及到字符串的拼接,就需要用到StringBuilder

StringBuilder的创建:

StringBuilder builder = new StringBuilder();

也可以直接初始化,在括号里赋值初始字符串或者初始长度就是

比如:

StringBuilder builder = new StringBuilder("aaa");//初始字符串
StringBuilder builder = new StringBuilder(5);//初始长度

同时字符串的拼接涉及方法:append()

builder.append("aaa"),作用是在builder字符串后面添加数据,在加入新字符串时,不会在内存中新开辟字符串空间,只是给原有的字符串尾部加入新字符串.

toString()方法用于返回以一个字符串表示的num对象值,把string里的对象转变成int型,

OK有了上面的知识铺垫,下面做题:

若输入字符串: “aabbbccdaa” ,计算每个连续的字符的个数,并生成一个新的字符串:“a2b3c2d1a2”。

这是直接跟相邻的比较就可以,另外一种是只统计字符出现次数,比如“aabbbccdaa”,压缩成a4b3c2d1

思路就是用第n个字符去和第n+1个字符对比,相等则出现次数+1,不相等则拼接在字符串后面

详解在代码中展示

/*输入字符串:“aabbbccdaa” ,生成字符串:“a2b3c2d1a2”*/
import java.util.Scanner;public class StringPress {public static void main(String[] args) {String s1="";   //s1表示输入的字符串,赋初值为空字符串StringBuilder buffer = new StringBuilder();//创建buffer对象Scanner sc = new Scanner(System.in);System.out.println("输入一行字符");s1 = sc.nextLine();//读入输入的字符char ch;    //表示s1中的一个字符ch=s1.charAt(0);//先用第一个字符赋值int  num=1;  //计算次数的,初始值为1//统计s1中的字符,并将字符和该字符的个数连接到字符串buffer中for(int k=1;k<s1.length();k++){if(ch==s1.charAt(k))  //如果当前字符和下一个字符一样{num++;    //结果次数+1}else {buffer.append(ch).append(num);  //不一样则拼接在buffer后面,先字符再次数ch=s1.charAt(k);  //然后重置ch为当前字符num=1; //结果次数重置为1}}//因为循环条件是k<s1.length(),所以最后一个字符统计不到,输出的时候加上,最后别忘了toStringSystem.out.print("压缩后的字符串"+buffer.append(ch).append(num).toString());}
}

Java字符串压缩(知识点详解)相关推荐

  1. java.lang.inc,Java 字符串的拼接详解

    时间:2016-09-15来源:www.aspku.com 作者:源码库 文章热度: ℃ 工作日忙于项目的逻辑实现,周六有点时间,从书柜里拿出厚厚的英文版Thinking In Java,读到了字符串 ...

  2. Java字符串常量池详解(StringTable)

    前言:在介绍字符串常量池之前,我们先来简单了解下Java中字符串的概念以及常见的一些问题. 参考书籍: <Java核心技术> 参考网站:牛客 作者水平很有限,如果发现错误,麻烦及时告知作者 ...

  3. java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用

    StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...

  4. java中流_Java中流的有关知识点详解

    Java中流的有关知识点详解 发布时间:2020-09-17 03:50:59 来源:脚本之家 阅读:103 作者:mumu1998 什么是流? 流:程序和设备之间连接起来的一根用于数据传输的管道,流 ...

  5. java ant解压缩_java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解

    java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解 发布于 2020-4-7| 复制链接 摘记: java ant包中的org.apache.tools.zip实现 ...

  6. JAVA算法:回文字符串相关问题详解(回文字符串总结)

    JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...

  7. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

  8. Java虚拟机(Jvm详解)

    Java虚拟机(Jvm详解) 总体知识点框架 1.运行时数据区域 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区 直接内存 (非运行时数据区的一部分) Java 虚拟机规范对 ...

  9. Java单元测试之JUnit4详解

    2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...

最新文章

  1. javascript的string对象
  2. SpringMVC学习手册(三)------EL和JSTL(上)
  3. elasticsearch常见报错总结
  4. c/c++中typedef与函数指针
  5. vector拷贝复制方法
  6. LeetCode 1118. 一月有多少天(闰年判断)
  7. 专访iQOO Pro产品经理:以更好的产品 更低的价格推进5G生态普及
  8. 数据治理为何越来越重要
  9. 鼠标单击变双击问题排查
  10. java项目包名理解
  11. JAVA程序员就业面试题大全
  12. 凯恩斯主义两个重要观念的由来
  13. 浩辰CAD给排水2021安装教程
  14. KindEditor实现WORD粘贴图片自动上传
  15. 计算机省一级b类模拟试题,江苏省计算机一级模拟试题及答案
  16. 如何通过Oracle官网下载jdk历史版本
  17. 基于Mind+、MOTT实现人工智能
  18. 小程序 【头像昵称填写能力】使用
  19. MATLAB入门实例——绘制伯德图
  20. 音频转文字怎么操作?快来看看这几个方法吧

热门文章

  1. java+mysql 基于ssm的网上甜品店系统
  2. java怒血罗汉_“血麒麟”罗汉玩家你知道么?
  3. 怎么做外贸soho?外贸邮箱哪个优惠好用?
  4. 快手小店违约金不交保证金能退吗?保证金怎么退?
  5. 常见的微指令编码方式
  6. 「数据库教程」MySQL删除数据库
  7. 生活中的左先生和右先生
  8. 【Axure高保真原型】自动设置页码的中继器表格模板
  9. 周品:找到客户找商品的规律很重要
  10. 图灵程序设计丛书 python_Python深度学习(图灵程序设计丛书)