题目

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

示例1:

输入:"aabcccccaaa"

输出:"a2b1c5a3"

示例2:

输入:"abbccd"

输出:"abbccd"

解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。

提示:

字符串长度在[0, 50000]范围内。

题解

用两个指针i、j维护连续的数字区间

字符变化/最后到结尾,采用的操作一样,所以统一处理。

代码

class Solution {
public String compressString(String S) {
if(S == null){
return null;
} StringBuilder newStr = new StringBuilder();
int i = 0;
while(i < S.length()){
int j = i;
while(j < S.length() && S.charAt(i) == S.charAt(j)){
++j;
}
newStr.append(S.charAt(i));
newStr.append(j - i);
i = j;
}
return newStr.toString().length() <S.length()?newStr.toString():S;
}
}

最新文章

  1. fastclick 源码注解及一些基础知识点
  2. 如何在Sublime text中运行PHP文件
  3. C++模板元编程 - 2 模仿haskell的列表以及相关操作
  4. http://jingyan.baidu.com/article/e4511cf33479812b855eaf67.html
  5. centos上安装rabbitmq并且python测试
  6. Oracle 向上递归、向下递归
  7. 模型驱动 ModelDriven
  8. 师兄写的一个JAVA播放器的源代码(转)
  9. 转战Hexo
  10. Java历程-初学篇 Day01初识java
  11. Snapde一个全新的CSV超大文件编辑软件
  12. centos7 永久添加静态路由
  13. C#等同于正则表达式的写法
  14. linux运行进程实时监控pidstat详解
  15. springMVC(二): @RequestBody @ResponseBody 注解实现分析
  16. 如何用新安装的jdk替换掉Linux系统默认jdk
  17. openJDK环境搭建编译(fedora)
  18. 【论文笔记】多任务学习(Multi-Task Learning)
  19. JSON学习笔记-2
  20. JavaScript中的arguments详解

热门文章

  1. # 火题小战 A.玩个球
  2. Oracle用户授权
  3. [C#] (原创)一步一步教你自定义控件——02,ScrollBar(滚动条)
  4. Java中对象和对象引用的区别,引用、指向是什么意思
  5. 数据结构与算法笔记(java)目录
  6. Scala中做简易wordCount
  7. springMVC入门(八)------拦截器
  8. dcoker 小应用(二)
  9. Linux下安装mysql时报错:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper
  10. springboot-swagger配置