zoukankan      html  css  js  c++  java
  • 《程序员面试金典》之基本字符串压缩

    1、题目描述

      利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。

    测试样例
    "aabcccccaaa"
    返回:"a2b1c5a3"
    "welcometonowcoderrrrr"
    返回:"welcometonowcoderrrrr"

    2、代码实现

     1 import java.util.*;
     2 
     3 public class Zipper {
     4     /**
     5      * 基本的字符串压缩功能,若压缩后的字符串没有变短,则返回原先的字符串。
     6      * @param iniString 待压缩的字符串
     7      * @return 压缩后的字符串
     8      */
     9     public String zipString(String iniString) {
    10         int num = 1;
    11         iniString += " ";
    12         StringBuilder sb = new StringBuilder();
    13         
    14         for(int i = 0; i < iniString.length()-1; i++){
    15             
    16             if(iniString.charAt(i) == iniString.charAt(i+1)){
    17                 num++;
    18                 continue;
    19             }
    20             else{
    21                 sb.append(iniString.charAt(i));
    22                 sb.append(num);
    23                 num = 1;
    24             }
    25         }
    26         return sb.length() == iniString.length()*2-2?iniString.trim():sb.toString();
    27     }
    28     
    29     /**
    30      * 用户页面测试
    31      * @param args
    32      */
    33     public static void main(String[] args) {
    34         Zipper zipper = new Zipper();
    35         System.out.println(zipper.zipString("aabcccccaaa"));
    36         System.out.println(zipper.zipString("abc"));
    37     }
    38 }
  • 相关阅读:
    IDirect3DDevice9::SetTexture的stage参数
    c++ 返回对象的引用要小心
    c++ 头文件循环引用解法
    Real-Time Rendering.3rd,Radiance与距离无关 的解释
    0xffff0000颜色表示
    signed distance field 算法
    c++ abs与fabs
    unity, OnTriggerEnter2D不触发
    unity, particle play once and destroy
    装机人员工具
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5965339.html
Copyright © 2011-2022 走看看