题目
给定一个字符串,要求找到满足如下条件的子串P。
1)P包含s中出现的所有字符。
2)P的字典序最小。
3)P的起始位置越靠后越好。
当引起冲突时,应按照1)> 2) >3)的优先级满足条件。
输入:dcdcaz 输出:cdcaz
package org.example.exer;
import java.util.HashMap;
import java.util.Scanner;
public class StringExer {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
while (true) {
System.out.println("Please input a string (input 0 to exit):");
String str = s.next();
if (str.equals("0")) {
break;
}
HashMap<Character, Integer> charMap = new HashMap<>();
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
charMap.put(charArray[i], i);
}
int index = charArray.length-1;
for (char c : charMap.keySet()) {
if (charMap.get(c) < index) {
index = charMap.get(c);
}
}
for (int i = index-1; i >= 0; i--) {
if (charArray[i] < charArray[index]) {
index = i;
}
}
System.out.println(str.substring(index));
}
}
}