java - 基于字符串的模式数组对字符串进行排序

标签 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

期待

"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/

相关文章:

java - onMousePressed() 只检测一次

java - JPA(使用 Hibernate)@ManyToMany @JoinTable 关系级联

java - 使用 apache commons io 更改文件的编码不起作用?

java - 在Android应用程序包名称中使用特殊字符

java - 现有 PUBLIC 模式的 Flyway

java - 如何使用 Apache POI 在 Word .docx 文件中正确生成 RSID 属性?

java - 等待锁操作时线程永远阻塞

java - Flume java.lang.IllegalStateException : File has changed size since being read

java - Dictionary of unknown size - 查找一个词是否在字典中

java - Netty服务器发送Protobuf编码的byte[],但C#客户端Socket.Receive一直为0