华为机试真题 java 实现【字符串重新排列】
时间: 2023-05-08 13:00:38 浏览: 205
华为机试题库2很多原题
5星 · 资源好评率100%
这道题要求我们完成一个字符串重新排列的算法,我们可以使用一种简单的做法,即计算每个字符出现的次数,然后重新构建一个新的字符串。具体步骤如下:
1. 定义一个长度为256的整型数组int[] count,用于记录每个字符出现的次数。
2. 遍历原始字符串,对于每个字符c,将count[c]++。
3. 构建一个StringBuilder对象,遍历字符集(ASCII码),并将每个字符按照出现次数构造一个新的字符串。
完整代码如下:
```java
public class StringReset {
public static String reset(String str) {
if (str == null || str.length() == 0) {
return "";
}
int len = str.length();
int[] count = new int[256];
for (int i = 0; i < len; i++) {
count[str.charAt(i)]++;
}
StringBuilder builder = new StringBuilder(len);
for (int i = 0; i < 256; i++) {
for (int j = 0; j < count[i]; j++) {
builder.append((char) i);
}
}
return builder.toString();
}
}
```
参考答案:本题的时间复杂度为O(n),空间复杂度为O(1)。
阅读全文