网上看了一个面试题,感觉挺有意思,试着实现了一下,如下代码
package order;
/**
* @author ty93
* @难度 ***
* @算法: 合并一个字符串中的所有子字符串 例如12342343454565678789->123456789
* 11223344->11223344
* 123423434545656787898901121512->1234567890115
*/
public class StringCombin {
public static String fatherString = "";
public static String getString(String str) {
String stmp = "";
int i;
c: for (i = fatherString.length(); i < str.length(); i++) {
if (fatherString.contains(String.valueOf(str.charAt(i)))) {
int origin = i;
int j;
if (i == str.length() - 1) {
String tempString = str.substring(str.length() - 2);
if (!fatherString.contains(tempString)) {
if (tempString.charAt(0) == tempString.charAt(1)) {
fatherString += tempString.substring(1);
} else {
fatherString += tempString;
}
}
break;
} else if (i == str.length()) {
fatherString += str.substring(str.length() - 1);
break;
}
for (j = origin + 1; j < str.length(); j++) {
String innString = str.substring(origin, j);
if (fatherString.contains(innString)) {
} else {
if (j - origin > 2) {
StringBuffer sb = new StringBuffer(str);
stmp = sb.delete(origin, j - 1).toString();
fatherString = "";
break c;
} else {
stmp = str;
fatherString = fatherString + str.substring(origin, j - 1);
break;
}
}
}
} else {
fatherString = fatherString + String.valueOf(str.charAt(i));
}
}
if (i == str.length()) {
return fatherString;
}
System.out.println(stmp.toString() + "_" + fatherString.toString());
if (stmp != "")
return getString(stmp);
return fatherString;
}
public static void main(String[] args) {
StringBuffer str = new StringBuffer("123423434545656787898901121512");
System.out.println(getString(str.toString()));
}
}
分享到:
相关推荐
- **查找**:`find()`函数用于查找子字符串在主字符串中的位置,`find_last_of()`查找指定字符或子字符串最后一次出现的位置。 - **替换**:`replace()`函数可以替换字符串的一部分。例如,`str.replace(pos, len, ...
这个函数主要用于替换字符串中的子串,但通过巧妙的应用,它也可以实现字符串的拼接。在上述示例中,`STUFF()`函数被用作多行字符串拼接的关键技术。 #### 示例解析 考虑以下SQL查询: ```sql SELECT Year, week1,...
上述例子中,`count()`方法返回了子字符串"Python"在原始字符串中出现的次数。需要注意的是,`count()`方法区分大小写,所以如果需要不区分大小写地统计,我们需要先将字符串转换为全大写或全小写。 除了`count()`...
可以使用`indexOf()`或`lastIndexOf()`函数来查找子字符串在主字符串中的位置,如果找到则返回起始位置索引,否则返回-1。 9. **分割字符串**: `split()`函数可以按照指定的分隔符将字符串分割成字符串列表,这...
4. 合并字符:将得到的ASCII字符合并成一个字符串输出。 在提供的"16至普通转化.vi"虚拟仪器中,很可能包含了实现这些步骤的子VI或函数。打开这个VI,我们可以看到其内部结构,通常会有一个循环来处理每个十六进制...
VB中用于合并字符串的主要方法是`Join()`函数,它接收一个字符串数组和可选的分隔符,然后返回一个由数组元素连接成的新字符串。例如,如果我们有之前分隔得到的`fruits`数组,可以使用以下代码合并它们: ```vb ...
`strchr()`函数用于查找子串的第一个字符,`strstr()`则可以查找子串在整个字符串中的位置。结合这两个函数,我们可以方便地提取子字符串。 4. 大小写转换: 使用`tolower()`和`toupper()`函数可以轻松实现字符的...
在本篇文章中,我们将深入探讨如何在一个已知的字符串中截取满足特定条件的子字符串。这个主题在软件开发和编程领域中极为常见,尤其是在处理大量文本数据时。通过具体的例子,我们将逐步解析如何实现这一功能,并...
- `replace()`用于替换字符串中的子字符串,例如`'hello'.replace('l', 'x')`返回`'hexxo'`。 - `split()`, `rsplit()`, `splitlines()`用于分割字符串,`partition()`, `rpartition()`找到子字符串并返回三部分。...
- **替换(Replace)**:用新的字符串替换原字符串中的某个或所有子字符串。 - **插入(Insert)**:在字符串的特定位置插入新的字符或字符串。 - **删除(Delete)**:删除字符串中的特定字符或子字符串。 - **反转...
这个函数将一个字符串按照指定的分隔符切分为多个子字符串,返回一个数组。例如,如果有一个字符串`str = "apple,banana,orange"`,我们可以使用逗号作为分隔符,如下所示: ```vb Dim str As String = "apple,...
3. **查找与替换**:`find()`和`replace()`函数分别用于查找子字符串的位置和替换子字符串。 4. **大小写转换**:`upper()`、`lower()`和`title()`函数可以将字符串转换为全大写、全小写和首字母大写的形式。 5. **...
- `replace(old, new)`:替换字符串中所有出现的`old`子串为`new`。 - `split(separator)`:根据`separator`分隔字符串并返回子字符串列表。 - `join(iterable)`:使用字符串作为连接符,合并`iterable`中的元素成新...
- 截取子字符串:`string subStr = str.Substring(startIndex, length);` 4. **字符串比较** - `==`运算符:比较字符串内容是否相等,不区分大小写。 - `Equals()`方法:区分和不区分大小写的比较。 - `Compare...
在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某一部分。这通常通过使用`split()`方法来实现,该方法是`String`类的一个实例方法。让...
在JavaScript中,处理字符串是一项常见的任务,而去除字符串中的指定子字符串则是其中的一个重要操作。本文将详细介绍两种主要的方法来实现这一功能:使用`replace()`函数和通过字符串的`split()`与`join()`组合使用...
减法操作通常不适用于字符串,因为字符串是不可变的,但我们可以创建一个新的字符串,从一个字符串中去除另一个字符串的部分。 2. **空串判断**: 判断一个字符串是否为空有多种方法。对于字符数组,我们可以检查...
### JavaScript将字符串中的多个空格替换为一个空格的正则实例 在Web开发与日常编程中,我们经常需要处理字符串。特别是在用户输入或者文本处理过程中,常常会遇到需要清理字符串中的多余空格的情况。例如,当从...
`str.find(substring)`用于查找子字符串在原字符串中的位置,返回第一个匹配的起始索引;如果未找到,则返回-1。 6. **字符串替换**: `str.replace(old, new)`方法可以将字符串中的某个子串替换为新的子串。 7....