zoukankan      html  css  js  c++  java
  • 字符串压缩

    1、问题描述

      通过键盘输入一串大写字母(A~Z)组成的字符串。请编写一个字符串压缩程序,将字符串连续出现的重复字母进行压缩,并输出压缩后的字符串。

    2、基本要求:

      (1)仅压缩连续重复出现的字符。比如字符串“ABCBC”由于无连续重复字符,压缩后的字符串还是“ABCBC”。

      (2)压缩字段的格式为“字符重复的次数+字符”。例如:字符串“XXXYYYYYYZ”压缩后就成为“3X6YZ”。

    3、设计思路:

      利用循环嵌套,外循环遍历字符串,内循环检测有多少个字母是相同的数。

      如:字符串XXXYYYYYYZZZ,外循环循环变量i,内循环循环变量j,当i =

      0时,第一次进入内循环,使j从i的下一位开始检测字符串,如果Str[i]与Str[j]相

      同时,计数变量增加。直到Str[i]与Str[j]不相同,直接输出计数变量和字符Str[i],

      并将此时的j赋值给变量i,跳过已经遍历过的字符片段。直到将整个字符串遍历完成。

    4、源代码:

    package cn.test.termtest.uglynumber;
    
    import java.util.Scanner;
    
    public class Dupletter {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner sc=new Scanner(System.in);
            String inStr=sc.next();                      //固定不变的
            StringBuffer outStr=new StringBuffer("");     //需要修改的
            char preChar = inStr.charAt(0);
            char curChar;
            int count=1;
            for(int i=1;i<inStr.length();i++) {
                curChar=inStr.charAt(i);
                if(curChar!=preChar) {
                    
                        outStr.append(count);
                    outStr.append(preChar);
                    count=1;
                    preChar=curChar;
                }else
                    count ++;
            }
            
                outStr.append(count);
            outStr.append(preChar);
            System.out.println(outStr);
        }
    
    }

    5、运行结果:

      (1)输入XYZASDAS

      

      (2)输入XXXYYYYYYZZZ

       

  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/13171478.html
Copyright © 2011-2022 走看看