`
standalone
  • 浏览: 613050 次
  • 性别: 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来做 简单点

相关推荐

    使用正则表达式检测字符串中重复出现的词

    在本示例中,我们将讨论如何利用正则表达式来检测字符串中重复出现的词。这个功能在数据清洗、文本分析、日志处理等多种场景下都非常实用。 首先,我们要理解正则表达式的概念。正则表达式是由特殊字符和普通字符...

    php常用函数列表 涉及很多好用的字符串函数

    13. **stripcslashes($string)**: 去掉字符串中的反斜杠。 14. **stripslashes($string)**: 去掉字符串中的反斜杠。 15. **strtolower($string)**: 将字符串中的所有字符转换为小写。 16. **strtoupper($string)*...

    字符串操作完全演示

    无论是在数据处理、用户界面交互还是算法实现中,我们都需要对字符串进行各种操作。本教程将全面介绍字符串操作的相关知识点,帮助你掌握这一重要的技能。 首先,我们需要理解什么是字符串。在大多数编程语言中,...

    Visual Basic中的常用字符串函数

    - **Ucase(X)**: 此函数用于将字符串X中的所有字母转换为大写。 - 示例: `X = "VBandVCL"`时,`P = Ucase(X)`返回“VBANDVCL”。 - **Lcase(X)**: 此函数用于将字符串X中的所有字母转换为小写。 - 示例: `X = ...

    c++的string的使用

    - **1.5.2 string与unique、sort**:结合`std::unique`和`std::sort`对字符串进行排序并去除重复字符。 - **1.5.3 string与search**:使用`std::search`在字符串中查找模式。 - **1.5.4 string和find、find_if**:...

    判断字符串是否回文 程序

    在编程中,判断一个字符串是否为回文是一项常见的任务,对于学习基础算法和字符串处理非常有帮助。 在给定的"判断字符串是否回文"程序中,我们可以推测它实现了一个功能,即接收用户输入的字符串,然后检查这个字符...

    java算法之字符串处理

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

    将字符串转会为十六进制

    在IT领域,将字符串转换为十六进制是一个常见的需求,尤其是在数据处理、加密解密算法、网络通信等场景中。本文将深入解析如何实现这一功能,包括基础概念、代码实现及注意事项。 ### 基础概念 #### 字符串与十六...

    一些常用的string的校验和测试类

    7. **重复字符检测**:检测字符串中是否有重复的字符,比如连续相同的字符或特定字符出现次数过多。 8. **编码转换**:在不同字符编码(如ASCII、UTF-8、GBK等)之间进行转换,解决编码不兼容问题。 9. **去除空白...

    aba.rar_ABA_判断以@为结束符的字符串是否_回文序列

    由于题目中提到了"aba.rar"这个压缩包文件,我们可以假设我们将在其中找到一个字符串,该字符串以'@'字符结束。通常,在处理这种问题时,我们首先会读取这个字符串,然后进行处理。文件"aba.doc"可能是包含这个字符...

    matlab数组字符串 字符串处理 算法开发、数据可视化、数据分析以及数值计算 Matlab课程 教程 进阶 资源

    MATLAB提供了多种字符串处理函数,如`strsplit`用于分割字符串,`strjoin`用于合并字符串,`strtrim`去除字符串首尾空白,`strrep`替换字符串中的特定子串,以及`lower`和`upper`转换字符串为小写或大写。...

    C语言字符串的练习题和答案

    **知识点解释**:此函数通过冒泡排序算法对字符串中的字符进行升序排列。外部循环控制排序的轮数,内部循环则负责每一轮中的相邻元素交换工作,以确保较大的元素逐渐“冒泡”到数组的后部。 ### 分段排序 #### ...

    Laravel开发-string

    在Laravel框架中,字符串操作是非常常见且重要的任务,它为开发者提供了丰富的工具来处理文本。Laravel 3中的字符串类,即`Str`类,是处理字符串的强大工具箱,包含了许多实用的方法,使得字符串操作变得简洁高效。...

    轻松入门MATLAB:MATLAB深入学习字符串.zip

    本资料包"轻松入门MATLAB:MATLAB深入学习字符串.zip"专注于MATLAB中的字符串处理,这是编程中不可或缺的一部分,尤其是在数据处理和文本分析领域。 在MATLAB中,字符串是字符数组,可以用来存储文本信息。MATLAB...

    java-leetcode面试题解Stack之第1047题删除字符串中的所有相邻重复项-题解.zip

    在本压缩包中,我们关注的是一个与Java编程和LeetCode相关的面试问题,具体是第1047题,题目要求删除字符串中的所有相邻重复项。这个问题主要涉及到字符串处理和栈(Stack)数据结构的应用。下面我们将深入探讨这个...

    浅析51个PHP处理字符串的函数

    23. `QuoteMeta()`:在字符串中所有非字母数字字符前添加反斜线,用于在正则表达式中使用字符串。 24. `rawurldecode()`:解码URL编码的字符串,恢复原始字符。 25. `rawurlencode()`:将字符串编码为URL编码,...

    Informatica PowerCenter函数功能使用指南

    - INITCAP:将字符串中每个单词的首字母大写。 - INSTR:返回子字符串在字符串中的位置。 - LENGTH:返回字符串的长度。 - LOWER:将字符串转换为小写。 - LPAD/RPAD:使用指定字符填充字符串至指定长度。 - LTRIM/...

    ASC和字符串互转

    在这个示例中,`stringToAscii`方法将输入的字符串转换为ASCII码的字符串形式,而`asciiToString`方法则将ASCII码字符串还原为原始字符串。运行这段代码,你会看到原始字符串和经过ASCII转换后又还原的字符串是一致...

    浦发银行机考历年真题(3).pdf

    14. 去掉字符串末尾的空格:这是字符串处理中最基本的操作之一。 15. 字符串中字符种类计数:需要遍历字符串并统计各种类型字符的数量。 16. 字符串比较问题:涉及到字符串的比较和匹配,是字符串处理的常规问题。...

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

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

Global site tag (gtag.js) - Google Analytics