题目:

比如输入为aaabbc,输出a3b2c1

完整解答:

public class Other {

    static String func(String str) {

        StringBuffer result = new StringBuffer();

        if (str.length() == 1) {
result.append(str.charAt(0));
result.append('1');
return result.toString();
} else { // string length >= 2 result.append(str.charAt(0));
int c = 1; for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == str.charAt(i + 1)) {
c++;
} else {
result.append(Integer.toString(c).toCharArray());
result.append(str.charAt(i+1));
c = 1;
}
}
result.append(Integer.toString(c).toCharArray());
return result.toString();
}
} public static void main(String[] args) {
String str = "abcdefg";
System.out.println(func(str));
} }

遍历指针为i,由于要用到i+1,考虑到charAt方法潜在越界可能,所以将情况分为两种:1、String的长度为1;2、String的长度大于1.

我之前遇到一个抉择,当str.charAt(i)!=str.charAt(i+1)时,是append(i)呢,还是append(i+1)呢?经过实验,是应该将i+1处的那个字符append起来比较好,这样做也要求了在一开始处append(str.charAt(0)),以及在最后补上一个append(c(to char))。

java 统计字符串中连续重复的字符,并得出新字符串的更多相关文章

  1. 使用java语言,将字符串中连续重复出现的字母变成“出现次数“+字母的格式

    今天在简书上看到这样一道有趣的算法题: 解题思路 首先定义一个变量element,默认是字符串的第一个字符.以element为基准元素,去判断某个字符是否重复.然后再去定义一个变量count去记录重复 ...

  2. Java入门:基础算法之从字符串中找到重复的字符

    本程序演示从一个字符串中找出重复的字符,并显示重复字符的个数. import java.util.HashMap; import java.util.Map; import java.util.Set ...

  3. 三种java 去掉字符串中的重复字符函数

    三种java 去掉字符串中的重复字符函数 public static void main(string[] args) { system.out.println(removerepeatedchar( ...

  4. python实现字符串中如果遇到连续重复的字符只出现一次非去重

    需求:在一个字符串中, 如果遇到连续重复的字符只出现一个,(不是去重) 例:str1 = 'aabbccddaabbccdd' 输出结果为:‘abcdabcd’ 具体实现代码如下: def func( ...

  5. JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符

    package com.pb.demo.packclass.demo1; import java.util.HashSet; /** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 ...

  6. 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。

    题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在ACSII码范围内. 输出描述: 输出范围在( ...

  7. 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)

    需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如: a 不替换 b 不替换  ab 不替换 ba 不替换 aba 不替换  aab 替换为 ...

  8. c# 过滤字符串中的重复字符

    有字符串"a,s,d,v,a,v",如果想去除其中重复的字符,怎么做? 下面是一个方法,用Hashtable来记录唯一字符,排除重复字符,仅供参考. 1.过滤方法: public ...

  9. hash数组快速查找一个字符串中出现最多的字符,并统计出现的次数

    如何快速查找一个字符串中出现最多的字符,并统计出现的次数? 可以使用hash数组,也就是关联数组实现快速查找功能. function seek(str) { var hash = []; var ma ...

随机推荐

  1. jquery 四舍五入小数处理总结

    一.jquery中对小数进行取整.四舍五入的方法 1.丢弃小数部分,保留整数部分 parseInt(5/2) =2 2.四舍五入. Math.round(5/2) =3 3.向下取整 Math.flo ...

  2. DAY 4模拟赛

    DAY 4 zhx出题 T1 裂变链接 [问题描述] 你是能看到第一题的 friends 呢. ——hja 众所周知,小葱同学擅长计算,尤其擅长计算组合数,但这个题和组合数没什么关系. 现在有

  3. 深度学习基础——Epoch、Iteration、Batchsize

    原文地址:https://www.cnblogs.com/Johnny-z6951/p/11201081.html 梯度下降是一个在机器学习中用于寻找较佳结果(曲线的最小值)的迭代优化算法.梯度的含义 ...

  4. AS之Lint 工具

    AndroidStudio内置的Lint工具,对app中的代码规范带来了极大的方便.对内存泄漏.代码冗余.代码安全.国际化.代码规范等很多方面都能检测,是一款非常强大的工具! 使用: 在AS--> ...

  5. BurpSuite(一)工具介绍

    , 本章目标: 1. 安装并配置好Burpsuite 2. 了解其各个模块功能 Burpsuite介绍 Burp Suite 是用于攻击web应用程序的集成平台.它包含了许多工具,并为这些工具设计了许 ...

  6. python之openpyxl生成excel文件

    项目需要,需要自动生成PDF测试报告.经过对比之后,选择使用了reportlab模块. 项目背景:开发一个测试平台,供测试维护测试用例,执行测试用例,并且生成测试报告(包含PDF和excel),将生成 ...

  7. delphi application 和 form 主窗体 都是窗口

    application     也是一个窗体,  和一般窗体不一样. 主窗体 是一个窗体. 然后这两个窗体,分别计算pid   获得结果竟然一样. 另外句柄是动态,全部都不一样.每一次都不一样.

  8. ffmpeg 视频过度滤镜 gltransition

    ffmpeg 视频过度滤镜 gltransition 上次随笔中提到的 ffmpeg-concat 可以处理视频过度,但是缺点是临时文件超大. 经过查找 ffmpeg 还有 gltransition ...

  9. javase程序设计上机作业1

    package javaxgp.teacher.test; import java.math.BigInteger; import java.util.Scanner; import java.uti ...

  10. 华为HCNA乱学Round 3:华为基础