CI1.5 利用字符重复的次数压缩字符
来源:互联网 发布:mac微云如何同步 编辑:程序博客网 时间:2024/05/16 07:59
解法一、使用StringBuffer
public class Main { public static void main(String[] args) { String str = "aarrvvh"; System.out.println(compressBetter(str)); } public static String compressBetter(String str) { // 检查压缩后的字符是否会变得更长 // 如果变得更长就不需要做压缩操作了,此处单列了出来 int size = countCompression(str); if (size > str.length()) { return str; } StringBuilder mystr = new StringBuilder(); char last = str.charAt(0); int count = 1; for (int i = 1; i < str.length(); i++) { if (str.charAt(i) == last) { count++; } else { mystr.append(last); mystr.append(count); last = str.charAt(i); count = 1; } } mystr.append(last); mystr.append(count); return mystr.toString(); } public static int countCompression(String str) { if (str == null | str.isEmpty()) return 0; char last = str.charAt(0); int size = 0; int count = 1; for (int i = 1; i < str.length(); i++) { if (str.charAt(i) == last) { count++; } else { last = str.charAt(i); size += 1 + String.valueOf(count).length(); count = 1; } } size += 1 + String.valueOf(count).length(); return size; }}
采用StringBuffer时间复杂度是n,使用String则是n^2
解法二、如果不能使用StringBuffer
public static String compressAlternate(String str){ int size = countCompression(str); if(size >= str.length()){ return str; } char[] array = new char[size]; int index = 0; char last = str.charAt(0); int count = 1; for(int i = 1; i < str.length(); i++){ if(str.charAt(i) == last) count++; else{ index = setChar(array, last,index,count); last = str.charAt(i); count = 1; } } index = setChar(array,last,index,count); return String.valueOf(array); } static int setChar(char[] array, char c, int index, int count){ array[index] = c; index++; char[] cnt = String.valueOf(count).toCharArray(); for(char x : cnt){ array[index] = x; index++; } return index; }
0 0
- CI1.5 利用字符重复的次数压缩字符
- 字符重复出现的次数
- !找出重复次数最多的字符
- 基本字符串压缩 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
- 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
- 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个stri
- 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
- 利用字符出现的次数,编写一个方法,实现基本的字符串压缩功能。
- 找出字符串中所有重复的字符及其重复次数
- 如何查找一个字符串中重复次数最多的字符,返回这个字符的个数和字符
- 【原创】打印一个string 字符串中重复字符的次数
- SQL中将字符指定重复次数的函数( REPLICATE )
- 输入字符串,删除重复次数最多的字符
- C++,输入字符串,删除重复次数最多的字符
- 获取String 中重复次数最多的字符
- REPLICATE 以指定的次数重复字符表达式
- 算法: 返回一串字符串中重复次数最多的字符
- 遍历字符串 返回字符重复出现的次数
- cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
- 胞元数组批量化操作函数cellfun 20170317
- ISCE安装
- SMS手机验证
- socket阻塞
- CI1.5 利用字符重复的次数压缩字符
- 简单的js弹窗+定时器代码
- [技巧]如何防止Linux命令行下MySQL登录密码泄露?
- tomcat报错
- angularjs2 -----路由
- What Is a X-Mailer Header?
- Android Studio 提示异常app:mergeDebugResources可能情况
- 【Java每日一题】20170317
- iOS8 模态视图跳转动画