java 压缩字符串 如aaaabbbbbcdefa变为a4b5cdefa
时间: 2024-02-15 16:30:37 浏览: 23
可以通过遍历字符串并记录每个字符的出现次数,然后将其转换为压缩后的字符串。下面是一个示例代码:
```java
public static String compressString(String str) {
StringBuilder sb = new StringBuilder();
int count = 1;
char currentChar = str.charAt(0);
for (int i = 1; i < str.length(); i++) {
if (str.charAt(i) == currentChar) {
count++;
} else {
sb.append(currentChar);
sb.append(count);
currentChar = str.charAt(i);
count = 1;
}
}
sb.append(currentChar);
sb.append(count);
return sb.toString();
}
```
使用该方法,可以将字符串 "aaaabbbbbcdefa" 压缩为 "a4b5cdefa"。
相关问题
java 不使用stringbuilder压缩字符串 如aaaabbbbbcdefa变为a4b5cdefa
可以使用普通的字符串操作来实现字符串压缩,具体实现步骤如下:
1. 定义一个计数器 count 和一个空字符串 result。
2. 遍历字符串,对于每个字符,如果它和前一个字符相同,则 count 加 1,否则将前一个字符和 count 一同拼接到 result 中,然后将 count 重置为 1。
3. 遍历结束后,将最后一个字符和 count 一同拼接到 result 中。
4. 返回 result。
具体实现代码如下:
```java
public static String compress(String s) {
if (s == null || s.length() == 0) {
return s;
}
int count = 1;
char prev = s.charAt(0);
StringBuilder result = new StringBuilder();
for (int i = 1; i < s.length(); i++) {
char curr = s.charAt(i);
if (curr == prev) {
count++;
} else {
result.append(prev).append(count);
count = 1;
}
prev = curr;
}
result.append(prev).append(count);
return result.toString();
}
```
对于样例字符串 "aaaabbbbbcdefa",该方法返回的结果是 "a4b5cdefa"。
压缩字符串 如aaaabbbbbcdefa变为a4b5cdefa
可以通过遍历字符串,记录当前字符以及出现次数的方式来实现压缩字符串的功能。具体来说,可以定义一个变量 `count` 来记录当前字符出现的次数,以及一个变量 `prev` 来记录上一个字符,初始值为字符串的第一个字符。然后遍历字符串中的每一个字符,若当前字符与上一个字符相同,则将 `count` 加 1,否则将上一个字符及其出现次数加入结果字符串中,并更新 `prev` 和 `count` 的值。最后别忘了将最后一个字符及其出现次数加入结果字符串中。
下面是一个实现此功能的 Python 代码示例:
```python
def compress_string(s):
if not s:
return ""
prev = s[0]
count = 1
result = ""
for i in range(1, len(s)):
if s[i] == prev:
count += 1
else:
result += prev + str(count)
prev = s[i]
count = 1
result += prev + str(count)
return result
```
使用该函数对字符串 `"aaaabbbbbcdefa"` 进行压缩,得到的结果为 `"a4b5cdefa"`。