我需要按照这些单词在模式数组中的放置顺序对字符串进行排序:
String[] pattern = {"Burger", "Fries", "Chicken", "Pizza", "Sandwich", "Onionrings", "Milkshake", "Coke"};
String s = "Chicken Coke Chicken Chicken Onionrings Coke Burger Milkshake Milkshake Burger Coke Milkshake Burger Onionrings Onionrings Coke Chicken Burger Fries Milkshake"; // input string
期待
"Burger Burger Burger Burger Fries Chicken Chicken Chicken Chicken Onionrings Onionrings Onionrings Milkshake Milkshake Milkshake Milkshake Coke Coke Coke Coke" // output string
最佳答案
您可以使用List
从单词中获取索引,然后使用这些索引对单词进行排序
- 获取单词的
列表
以使其可索引 将
到一个数组中,以便能够对单词进行排序字符串
拆分- 根据它们在
List
中的索引对它们进行排序
连接
单词得到一个字符串
// INPUTS
String s = "Chicken Coke Chicken Chicken Onionrings Coke Burger Milkshake Milkshake Burger Coke Milkshake Burger Onionrings Onionrings Coke Chicken Burger Fries Milkshake";
String expect = "Burger Burger Burger Burger Fries Chicken Chicken Chicken Chicken Onionrings Onionrings Onionrings Milkshake Milkshake Milkshake Milkshake Coke Coke Coke Coke";
String[] pattern = {"Burger", "Fries", "Chicken", "Pizza", "Sandwich", "Onionrings",
"Milkshake", "Coke"};
// Get the patterns a list to get the indexOf method
List<String> listPatterns = Arrays.asList(pattern);
// Split in words
String[] values = s.split(" ");
//Sort base on index in list
Arrays.sort(values, Comparator.comparing(listPatterns::indexOf));
// Rebuild a string by joining
String result = String.join(" ", values);
// true
System.out.println(result.equals(expect));
关于java - 基于字符串的模式数组对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63655094/