持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
写在前面
今天的这道题,《重新排列单词间的空格》主要考察对字符串拆分再合并的知识点。
很有意思的一道题,下面一起来看一下吧。
题目解读
根据题目的描述来看,是要在一个字符串text中,将其中的空格均匀分布。
题目的描述很长,但是其实就是如此简单的一个需求。
当然其中包括空格不会均匀的情况,这个时候就把多余的空格放在字符串末尾就可以了。
解题思路也很简单,就两个点,先将单词和空格进行分离操作,然后再将两者按照规范进行组装。
下面来看一下具体的代码编写吧。
代码实现
本次执行代码如下所示,大家可以自行试一下。
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.reorderSpaces(" this is a sentence "));
}
public String reorderSpaces(String text) {
List<String> list = new ArrayList<>();
int konggeCount = 0;
String[] strings = text.split("");
for (String string : strings){
if(" ".equals(string)){
konggeCount++;
}
}
String[] dc = text.split(" ");
for (String string : dc){
if(!"".equals(string)){
list.add(string);
}
}
if(list.size() == 1 && konggeCount == 0){
return list.get(0);
}
if(list.size() == 1){
return list.get(0) + zh(konggeCount);
}
int sp = konggeCount / (list.size() - 1);
int footer = konggeCount % (list.size() - 1);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
if(i == list.size() - 1){
stringBuilder.append(list.get(i)).append(zh(footer));
}else{
stringBuilder.append(list.get(i)).append(zh(sp));
}
}
return stringBuilder.toString();
}
public String zh(int length){
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < length; i++) {
stringBuilder.append(" ");
}
return stringBuilder.toString();
}
}
代码执行结果
今天的执行结果就不行了,速度和内存消耗都很高,看来这个方式还是不太行。
其他思路
这道题目前题解比较少,其他思路的话只能大家自己去发现了。
总结
本道题在于字符串中单词和空格的分离后的组装,想要提高效率就要在分离和组装的时候下功夫,简单的暴力解决也是可以解出这道题的。