package ox3;
import java.util.Arrays;
/**
* 1. 将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成。
* 举个例子:输入[“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]
* 输出[[“ate”,”eat”,”tea”],[“nat”,”tan”],[“bat”]]
*/
public class Demo00 {
public static void main(String[] args) {
//遍历分组,将字母相同的分为一组
String[] str = {"eat", "tea", "tan", "ate", "nat", "bat"};
//System.out.println(is("da", "da"));
for (int j = 0; j < str.length - 1; j++) {
String t = str[j];
if ("-".equals(t)) continue;
for (int i = j + 1; i < str.length - 1; i++) {
if (is(t, str[i])) {
str[j] += "-" + str[i];
//t+="-"+str[i];
str[i] = "";
}
}
}
System.out.println("分组后"+Arrays.toString(str));//[eat-tea-ate, -, tan-nat, -, , bat]
//分割字符串,将同一组的字符串分割,存进数组中
StringBuilder sbu = new StringBuilder();
for (String s : str) {
if ("".equals(s)|"-".equals(s))continue;
sbu.append(",").append(s);
}
//System.out.println(sbu);
String[] oo = sbu.substring(1).split(",");
System.out.println("分割后"+Arrays.toString(oo));
StringBuilder sbu1= new StringBuilder("[");
for (String s : oo) {
String[] t = s.split("-");
sbu1.append(Arrays.toString(t)).append(",");
}
sbu1.replace(sbu1.lastIndexOf(","),sbu1.lastIndexOf(",")+1,"]");
System.out.println("最终的样式输出"+sbu1);
}
//传入两个字符串,判断两个字符串是否相同
public static boolean is(String str1, String str2) {
boolean f;
char[] c1 = str1.toCharArray();
Arrays.sort(c1);
char[] c2 = str2.toCharArray();
Arrays.sort(c2);
f = Arrays.equals(c1, c2);
return f;
}
}
将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成。
举个例子:输入[“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]
输出[[“ate”,”eat”,”tea”],[“nat”,”tan”],[“bat”]]
首先,拿到这个问题应该先分析问题怎么解决。首先我们应该先将数组中的字符串分类,遍历,在代码的最后面写了一个静态方法is(),输入两个字符串,忽略大小写(这段代码给的数组中没有涉及大小写),排序,计较判断,相同返回true,不相同赶返回alse。
方法创建完成之后遍历所给的字符集合,调用方法is(),判断,操作。。。
创建一个字符缓冲区,对上一步得到的数组进行切割,将无用多出来的 " " 和 “-” 进行切割得到的数据类型为字符串
切割后再创建一个自促缓冲区将上一步的得到分组后的字符串分别加入到字符缓冲区中,为了实现输出结果的样式,在第二次创建字符缓冲区的时候,添加一个"["符号,并在最后添加一个"]"
最终完成最后的样式输出。
运行结果如下:
解决问题的思路,
我们拿到一个问题后,首先思考的是第一步应该怎么做,应该做什么,一步一步的想下去,知道问题的解决,然后我们在遵守我们的思路,进行实践,在实践的过程中就可以检验我们的想法是否正确,不正确在改正,在完成练习的过程中,思考很重要,它可以加快我们的进步,同时实践也同样重要。