LeetCode_1259:重新排列单词间的空隙
LeetCode1592 :Java 给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。
请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着返回的字符串应当与原 text 字符串的长度相等。
返回 重新排列空格后的字符串 。
package com.nowcoder.community.java_test; import org.apache.commons.lang3.builder.ToStringExclude; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.nextLine(); String b = reorderSpaces(a); System.out.println(b); } public static String reorderSpaces(String text) { //创建字符串b,忽略字符串text首部和尾部的空格; String b = text.trim(); //统计字符串中字母的数量 int numsZ = 0; // \s+将字符串按空格分离开来,存储到数组中 String[] words = b.split("\s+"); for (int i = 0; i < words.length; i++) { numsZ += words[i].length(); } //总的空格数量 int numsG = text.length() - numsZ; //每个单词后应该跟多少个字符串 注意分母不能为0 int ff = 0; if(words.length-1 != 0){ ff = numsG / (words.length-1); } //剩余的空格数量,最后添加在字符串结尾 int gg = numsG - ((words.length-1) * ff); //定义第一个字符串 String hh = words[0]; for (int i = 1; i < words.length; i++) { for (int j = 0; j < ff; j++) { hh += " "; } hh += words[i]; } //多余的空格添加到字符串最后 for (int k = 0; k < gg; k++) { hh += " "; } return hh; } }
方法二,利用text.charAt求出空格,空格的重复添加使用repeat即可,内存占有减少。
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.nextLine(); String b = reorderSpaces(a); System.out.println(b); } public static String reorderSpaces(String text) { //创建字符串b,忽略字符串text首部和尾部的空格; String b = text.trim(); //统计字符串中空格的数量 int numsZ = 0; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == ) { numsZ++; } } // \s+将字符串按空格分离开来,存储到数组中 String[] words = b.split("\s+"); //每个单词后应该跟多少个字符串 注意分母不能为0 int ff = 0; if (words.length - 1 != 0) { ff = numsZ / (words.length - 1); } //剩余的空格数量,最后添加在字符串结尾 int gg = numsZ - ((words.length - 1) * ff); //定义第一个字符串 String hh = words[0]; for (int i = 1; i < words.length; i++) { hh += " ".repeat(ff); hh += words[i]; } //多余的空格添加到字符串最后 hh += " ".repeat(gg); return hh; } }