zoukankan      html  css  js  c++  java
  • java 统计字符串中连续重复的字符,并得出新字符串

    题目:

    比如输入为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))。

  • 相关阅读:
    Python 列表字典制作名册管理
    AS3获取SWF文件中AS链接
    AS3多选多模型
    AS3视频播放器
    测试
    Makefile三个有用变量$@,$^,$<
    CentOS 7.2 安装教程
    Ubuntu 查看/修改文件编码
    API 进程、线程函数
    API 菜单函数
  • 原文地址:https://www.cnblogs.com/shuada/p/3611471.html
Copyright © 2011-2022 走看看