Problem of the Day: Remove Duplicate Characters and Digits with Different Rules You are given a string s consisting of lowercase English letters and digits (0–9). You must transform the string in two steps: Characters (a–z): Traverse from left to right. Keep only the first occurrence of each character. Remove all later duplicates. Digits (0–9): Traverse from right to left. Keep only the first digit you encounter (the rightmost occurrence in the original string). Remove earlier duplicates. Return the final transformed string. 1.Input: programming123321 After Step1: progamin123321 Final: progamin321 (keeps the rightmost 1,2,3 — final digits appear as the left-to-right order of their last occurrences) 2. Input: abc11223344 After Step1: abc11223344 Final: abc1234 3. Input: a1b2c1d2e3 After Step1: a1b2c1d2e3 Final: abc1d2e3
import java.util.Arrays;
ReplyDeleteclass Main {
public static void main(String[] args) {
String[] A = {"pant", "ants", "Dot", "Pot","Apple","Pots"};
for (int i = 0; i < A.length - 1; i++) {
for (int j = i + 1; j < A.length; j++) {
if (isLexo(A[i], A[j]) > 0) {
String temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}
System.out.println("Sorted array: " + Arrays.toString(A));
}
public static int isLexo(String a, String b) {
int len = Math.min(a.length(), b.length());
for (int i = 0; i < len; i++) {
if (a.charAt(i) < b.charAt(i)) {
return -1;
} else if (a.charAt(i) > b.charAt(i)) {
return 1;
}
}
if (a.length() < b.length()) return -1;
if (a.length() > b.length()) return 1;
return 0;
}
}