• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

啊远

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

《程序员面试金典》之基本字符串压缩

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 }

 

posted on 2016-10-15 21:12  啊远  阅读(260)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3