删除字符串中重复的字符

来源:互联网 发布:linux查网关 编辑:程序博客网 时间:2024/06/06 01:24

出自CareerCup

书中有错误,对于多个重复,解析不正确

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.


修改后如下


/** * InterTest * cn.ustc.inter.array_string * RemoveDuplicates.java * @version 1.0.0 * 2012-4-11  下午12:28:06 * Copyright (c) ustcxjt *  */package cn.ustc.inter.array_string;/** *  * RemoveDuplicates *  * Author:ustcxjt Modify by ustcxjt Date:2012-4-11 下午12:28:06 *  * @version 1.0.0 *  */public class RemoveDuplicates {public static char[] removeDuplicates(char[] str) {if (str == null)return str;int len = str.length;if (len < 2)return str;int tail = 1;int k=0;for (int i = 1; i < len; i++) {int j;for (j = 0; j < tail; j++) {if (str[i] == str[j]){k++;break;}}if (j == tail) {str[tail] = str[i];++tail;}}for(int i=0;i<k;i++)str[len-i-1] = 0;return str;}/** * main(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选) *  * @param args *            void * @exception * @since 1.0.0 */public static void main(String[] args) {// TODO Auto-generated method stubString str = "aabacabaadfgddddffffjk";System.out.println(RemoveDuplicates.removeDuplicates(str.toCharArray()));//char[] str= {'a','b','b','b','a'};//System.out.println(RemoveDuplicates.removeDuplicates(str));}}