根据字符串的模式数组对字符串进行排序

Art*_*hur 2 java

我需要按照这些单词在模式数组中的顺序对一串单词进行排序:

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
Run Code Online (Sandbox Code Playgroud)

预计

"Burger Burger Burger Burger Fries Chicken Chicken Chicken Chicken Onionrings Onionrings Onionrings Milkshake Milkshake Milkshake Milkshake Coke Coke Coke Coke" // output string
Run Code Online (Sandbox Code Playgroud)

azr*_*zro 5

您可以使用 aList来从单词中获取索引,然后使用这些索引对单词进行排序

  • 获取Listos 单词以使它们可索引
  • splitString进入一个数组,以便能够对单词进行排序
  • sort 他们根据他们在 List
  • join 得到一个的话 String
// 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));
Run Code Online (Sandbox Code Playgroud)