问题:去除字符串中的重复字符,不能使用额外空间(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);
}
}
分享到:
相关推荐
在本示例中,我们将讨论如何利用正则表达式来检测字符串中重复出现的词。这个功能在数据清洗、文本分析、日志处理等多种场景下都非常实用。 首先,我们要理解正则表达式的概念。正则表达式是由特殊字符和普通字符...
13. **stripcslashes($string)**: 去掉字符串中的反斜杠。 14. **stripslashes($string)**: 去掉字符串中的反斜杠。 15. **strtolower($string)**: 将字符串中的所有字符转换为小写。 16. **strtoupper($string)*...
无论是在数据处理、用户界面交互还是算法实现中,我们都需要对字符串进行各种操作。本教程将全面介绍字符串操作的相关知识点,帮助你掌握这一重要的技能。 首先,我们需要理解什么是字符串。在大多数编程语言中,...
- **Ucase(X)**: 此函数用于将字符串X中的所有字母转换为大写。 - 示例: `X = "VBandVCL"`时,`P = Ucase(X)`返回“VBANDVCL”。 - **Lcase(X)**: 此函数用于将字符串X中的所有字母转换为小写。 - 示例: `X = ...
在描述中,提到了两个关键点:一是如何对字符串中的字母进行排列组合,二是如何运用Python的递归。题目要求编写一个函数,当输入字符串如"abc"时,函数应返回所有可能的排列,如"abc", "acb", "bac", "bca", "cab", ...
在编程中,判断一个字符串是否为回文是一项常见的任务,对于学习基础算法和字符串处理非常有帮助。 在给定的"判断字符串是否回文"程序中,我们可以推测它实现了一个功能,即接收用户输入的字符串,然后检查这个字符...
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 3. ...
在IT领域,将字符串转换为十六进制是一个常见的需求,尤其是在数据处理、加密解密算法、网络通信等场景中。本文将深入解析如何实现这一功能,包括基础概念、代码实现及注意事项。 ### 基础概念 #### 字符串与十六...
7. **重复字符检测**:检测字符串中是否有重复的字符,比如连续相同的字符或特定字符出现次数过多。 8. **编码转换**:在不同字符编码(如ASCII、UTF-8、GBK等)之间进行转换,解决编码不兼容问题。 9. **去除空白...
由于题目中提到了"aba.rar"这个压缩包文件,我们可以假设我们将在其中找到一个字符串,该字符串以'@'字符结束。通常,在处理这种问题时,我们首先会读取这个字符串,然后进行处理。文件"aba.doc"可能是包含这个字符...
MATLAB提供了多种字符串处理函数,如`strsplit`用于分割字符串,`strjoin`用于合并字符串,`strtrim`去除字符串首尾空白,`strrep`替换字符串中的特定子串,以及`lower`和`upper`转换字符串为小写或大写。...
**知识点解释**:此函数通过冒泡排序算法对字符串中的字符进行升序排列。外部循环控制排序的轮数,内部循环则负责每一轮中的相邻元素交换工作,以确保较大的元素逐渐“冒泡”到数组的后部。 ### 分段排序 #### ...
在Laravel框架中,字符串操作是非常常见且重要的任务,它为开发者提供了丰富的工具来处理文本。Laravel 3中的字符串类,即`Str`类,是处理字符串的强大工具箱,包含了许多实用的方法,使得字符串操作变得简洁高效。...
本资料包"轻松入门MATLAB:MATLAB深入学习字符串.zip"专注于MATLAB中的字符串处理,这是编程中不可或缺的一部分,尤其是在数据处理和文本分析领域。 在MATLAB中,字符串是字符数组,可以用来存储文本信息。MATLAB...
在本压缩包中,我们关注的是一个与Java编程和LeetCode相关的面试问题,具体是第1047题,题目要求删除字符串中的所有相邻重复项。这个问题主要涉及到字符串处理和栈(Stack)数据结构的应用。下面我们将深入探讨这个...
23. `QuoteMeta()`:在字符串中所有非字母数字字符前添加反斜线,用于在正则表达式中使用字符串。 24. `rawurldecode()`:解码URL编码的字符串,恢复原始字符。 25. `rawurlencode()`:将字符串编码为URL编码,...
- INITCAP:将字符串中每个单词的首字母大写。 - INSTR:返回子字符串在字符串中的位置。 - LENGTH:返回字符串的长度。 - LOWER:将字符串转换为小写。 - LPAD/RPAD:使用指定字符填充字符串至指定长度。 - LTRIM/...
在这个示例中,`stringToAscii`方法将输入的字符串转换为ASCII码的字符串形式,而`asciiToString`方法则将ASCII码字符串还原为原始字符串。运行这段代码,你会看到原始字符串和经过ASCII转换后又还原的字符串是一致...
14. 去掉字符串末尾的空格:这是字符串处理中最基本的操作之一。 15. 字符串中字符种类计数:需要遍历字符串并统计各种类型字符的数量。 16. 字符串比较问题:涉及到字符串的比较和匹配,是字符串处理的常规问题。...