写在前面
今天的这道题,《重新排列单词间的空格》主要考察对字符串拆分再合并的知识点。
很有意思的一道题,下面一起来看一下吧。
题目解读
根据题目的描述来看,是要在一个字符串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(); } }
代码执行结果
今天的执行结果就不行了,速度和内存消耗都很高,看来这个方式还是不太行。
其他思路
这道题目前题解比较少,其他思路的话只能大家自己去发现了。
总结
本道题在于字符串中单词和空格的分离后的组装,想要提高效率就要在分离和组装的时候下功夫,简单的暴力解决也是可以解出这道题的。