cci-Q1.3 字符数组去重
来源:互联网 发布:pkpm施工软件下载 编辑:程序博客网 时间:2024/05/20 09:27
原文:
Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not.
FOLLOW UP
Write the test cases for this method.
译文:
设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
进一步地,
为你的程序写测试用例。
1,不使用额外的空间,时间复杂度O(n^2),扫描字符数组,将此字符后面与它相同的字符都替换成一个特殊的字符(假设字符串中不含这个替代符)
public static char[] removeDuplicates(char[] strTmp) { char[] str = strTmp; if (str == null) { return null; } int len = str.length; if (len < 2) { return str; } for (int i = 0; i < len; i++) { if (str[i] != '*') { for (int j = i + 1; j < len; j++) { if (str[j] == str[i]) { str[j] = '*'; } } } } return str; }
junit testcase
@Test public void testRemoveDuplicates() { System.out.println("removeDuplicates"); assertArrayEquals("abcd".toCharArray(), q1_3.removeDuplicates("abcd".toCharArray())); assertArrayEquals(null, q1_3.removeDuplicates(null)); assertArrayEquals("a****".toCharArray(), q1_3.removeDuplicates("aaaaa".toCharArray())); assertArrayEquals("a**b**".toCharArray(), q1_3.removeDuplicates("aaabbb".toCharArray())); assertArrayEquals("abcdefg*".toCharArray(), q1_3.removeDuplicates("abcdefga".toCharArray())); assertArrayEquals("abcdefg*".toCharArray(), q1_3.removeDuplicates("abcdefgb".toCharArray())); }
2,可以使用额外的空间,时间复杂度可以降低,使用Q1.1判断字符中是否存在重复元素的方法,如果是重复则替换成特殊字符。http://blog.csdn.net/hillchan31/article/details/9273369
- cci-Q1.3 字符数组去重
- cci-Q1.7 二维数组置0
- cci-Q1.1 判断字符串中字符是否唯一
- cci-Q1.8 调用一次子字符串判断确认s2是否为s1的旋转字符
- 数组去数组重
- cci-Q1.2 C风格字符串反转
- cci-Q1.5 空格替换为%20
- cci-Q1.6 矩形90度旋转
- 数组去重,json数组去重
- 数组去重
- 数组去重
- JS 数组去重
- 数组去重算法
- 数组去重
- js数组去重
- php 数组去重
- 数组去重
- 数组排序去重
- 类似新浪 腾讯微博字数统计 控制js(区分中英文 符号)
- MP3文件格式解析
- 微博测试,测试微博发送是否成功
- JSP中文编码
- PopupWindow封装-view上方显示和下方显示
- cci-Q1.3 字符数组去重
- linux 系统初始化工作
- 线性代数(六) : 线性相关与线性无关
- TOUCHXML解析xml
- 微博测试,测试微博发送是否成功
- 为你的Visual Studio 2010添加HTML5的项目模板
- FlexPaper实现文档在线浏览
- 微博测试,测试微博发送是否成功
- validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/