`
standalone
  • 浏览: 595907 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

算法:去除字符串中的重复字母

阅读更多
问题:去除字符串中的重复字符,不能使用额外空间(1或者2个变量除外)。

很简单的练手题,但是发现很难写正确。



public class DuplicateChar {
	//return length of the final string
	public static int removeDuplicateChar(char []str){
		int len = str.length;
		if(len < 2) return len;
		for(int i=0;i<len-1;i++){
			char ch = str[i];
			int index = i+1;
			for(int j=i+1;j<=len-1;){
				
				if(ch == str[j]){				
					j++;					
				}else {
					if(j!=index){
						str[index] = str[j];						
					}
					j++; index++;					
				}
			}
			len = index;
		}
		return len;
	}
	public static void test(char []str){
		int len = removeDuplicateChar(str);
		for(int i=0;i<len;i++){
			System.out.print(str[i] + "\t");
		}
		System.out.println();
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char [] str1 = {'a', 'b'};
		char [] str2 = {'a', 'b','c','a','a','e','f','a'};  
		char [] str3 = {'a'};
		char [] str4 = {};
		test(str1);
		test(str2);
		test(str3);
		test(str4);
	}

}

分享到:
评论
2 楼 standalone 2012-11-07  
那就是使用额外空间了吧?
1 楼 citystreet 2012-11-07  
可以使用hashset来做 简单点

相关推荐

    java算法之字符串处理

    在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 3. ...

    js常用工具函数--通用格式化时间、字符串验证-验证邮箱、手机号、电话号码、url地址、严格校验身份证号码,判断数据类型、数组随机洗牌算法、检测密码强度等等..

    求数组中的最大值,求数组中的最小值,数组中的值求和,去除字符串中的空格(1-所有空格 2-前后空格 3-前空格 4-后空格),字符转换(1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写),检测...

    java 算法

    多线程的世界时钟,显示巴黎,罗马,上海时间, AWT界面,Java日期格式化及其使用例子,几个常用方法,判断字符是否属于中文,异常处理类,去掉字符串中重复的子字符串,将指定byte数组以16进制的形式打印到控制台,...

    上海电机学院C语言实训答案

    其中,a中放字符串,k中存放指定的下标。 例如,字符串内容为:Hellollo World!,k中值为:5,n中的值为:3,则调用该函数的结果为:Hello World!。 (10)编写一个程序实现如下功能:调用名为tj的函数,求一个二...

    base58.zip

    区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。 结果字符集正好58个字符(包括9个数字,24...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    leetcode中国-quiz:每周小测

    字母异位词指字母相同,但排列不同的字符串。 题目参考: 实现版本: 题解参考: week 2 removeHexPrefix : 去除16进制的前缀,并转换为小写 实现版本: sanitizeHex : 为16进制字符串添加 "0x" 前缀 实现版本: padLeft ...

    c# 加密和解密相关代码

    在字符串中查找指定字符时,可以先将字符串显示在richTextBox 控件中,然后利用richTextBox 类的Find 方法在该控件中查找指定字符。在字符串中查找指定字符的代码如下: 第19章 加密与解密技术 833 M_int_index = ...

    EXCEL百宝箱8.0终极版

    【清除列中重复值】:将选择中重复出现的数据删除(保留第一次出现的数据) 【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,...

    delphi 开发经验技巧宝典源码

    0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断字符中是否有双字节 109 0168 判数输入的...

    delphi 开发经验技巧宝典源码06

    0163 判断字符串中是否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断字符中是否有双字节 109 0168 判数输入的...

    C语言学习代码圣诞节快乐贪吃蛇测试一箭穿心等C语言源代码收集整理资料.zip

    会问字符串.cpp 会问字符串.exe 余下的数字按原次序组成的新数最小.cpp 余下的数字按原次序组成的新数最小.exe 使用lib测试.cpp 俄罗斯方块.cpp 俄罗斯方块.exe 俄罗斯方块.obj 六边形.cpp 六边形.exe 冒泡排序.c ...

    论文研究-小字符集现代藏文排序技术的研究.pdf

    ISO/IEC 10646(Tibetan)中每个藏文字符规定了排序码,但是藏文音节的构造复杂性使得藏文不能直接按构成藏文音节的字母顺序来排序,也不能直接应用这些排序码,提出了基于ISO/IEC 10646(Tibetan)的藏文排序算法,...

    C#编程经验技巧宝典

    85 &lt;br&gt;0131 巧截字符串的数字 86 &lt;br&gt;0132 如何存储变长字符串 86 &lt;br&gt;0133 在进行字符串比较时忽略大小写 87 &lt;br&gt;0134 如何去除字符串尾空格 87 &lt;br&gt;0135 如何去掉字符串中所有空格 ...

    Python Cookbook

    1.5 去除字符串两端的空格 11 1.6 合并字符串 11 1.7 将字符串逐字符或逐词反转 14 1.8 检查字符串中是否包含某字符集合中的字符 15 1.9 简化字符串的translate方法的使用 18 1.10 过滤字符串中不属于指定集合...

    C# 控制台应用程序——随机数

    生成一个从0到strTableChar.Length的数字a,然后使用strTableChar[a]就可以随机返回一个字母,重复n次(n等于防伪码的长度),这样就可以组合到一串随机字符串,也就是防伪码了。 6、思路及技巧 1)随机数生成...

    PHP开发实战1200例源码

    实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式 147 实例116 验证电话号码的格式是否正确 147 实例117 验证Email地址格式是否正确 148 实例118 验证IP地址是否有效 149 实例119 统计关键字的查询结果 150...

Global site tag (gtag.js) - Google Analytics