Java字符串压缩(知识点详解)
任务描述
本关任务:字符串压缩。若输入字符串: “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字符串压缩(知识点详解)相关推荐
- java.lang.inc,Java 字符串的拼接详解
时间:2016-09-15来源:www.aspku.com 作者:源码库 文章热度: ℃ 工作日忙于项目的逻辑实现,周六有点时间,从书柜里拿出厚厚的英文版Thinking In Java,读到了字符串 ...
- Java字符串常量池详解(StringTable)
前言:在介绍字符串常量池之前,我们先来简单了解下Java中字符串的概念以及常见的一些问题. 参考书籍: <Java核心技术> 参考网站:牛客 作者水平很有限,如果发现错误,麻烦及时告知作者 ...
- java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用
StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...
- java中流_Java中流的有关知识点详解
Java中流的有关知识点详解 发布时间:2020-09-17 03:50:59 来源:脚本之家 阅读:103 作者:mumu1998 什么是流? 流:程序和设备之间连接起来的一根用于数据传输的管道,流 ...
- java ant解压缩_java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解 发布于 2020-4-7| 复制链接 摘记: java ant包中的org.apache.tools.zip实现 ...
- JAVA算法:回文字符串相关问题详解(回文字符串总结)
JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...
- Java编程配置思路详解
Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...
- Java虚拟机(Jvm详解)
Java虚拟机(Jvm详解) 总体知识点框架 1.运行时数据区域 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区 直接内存 (非运行时数据区的一部分) Java 虚拟机规范对 ...
- Java单元测试之JUnit4详解
2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...
最新文章
- javascript的string对象
- SpringMVC学习手册(三)------EL和JSTL(上)
- elasticsearch常见报错总结
- c/c++中typedef与函数指针
- vector拷贝复制方法
- LeetCode 1118. 一月有多少天(闰年判断)
- 专访iQOO Pro产品经理:以更好的产品 更低的价格推进5G生态普及
- 数据治理为何越来越重要
- 鼠标单击变双击问题排查
- java项目包名理解
- JAVA程序员就业面试题大全
- 凯恩斯主义两个重要观念的由来
- 浩辰CAD给排水2021安装教程
- KindEditor实现WORD粘贴图片自动上传
- 计算机省一级b类模拟试题,江苏省计算机一级模拟试题及答案
- 如何通过Oracle官网下载jdk历史版本
- 基于Mind+、MOTT实现人工智能
- 小程序 【头像昵称填写能力】使用
- MATLAB入门实例——绘制伯德图
- 音频转文字怎么操作?快来看看这几个方法吧