g1401_1500.s1417_reformat_the_string.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1401_1500.s1417_reformat_the_string;
// #Easy #String #2022_07_17_Time_10_ms_(62.27%)_Space_47.7_MB_(43.56%)
import java.util.ArrayList;
import java.util.List;
/**
* 1417 - Reformat The String\.
*
* Easy
*
* You are given an alphanumeric string `s`. ( **Alphanumeric string** is a string consisting of lowercase English letters and digits).
*
* You have to find a permutation of the string where no letter is followed by another letter and no digit is followed by another digit. That is, no two adjacent characters have the same type.
*
* Return _the reformatted string_ or return **an empty string** if it is impossible to reformat the string.
*
* **Example 1:**
*
* **Input:** s = "a0b1c2"
*
* **Output:** "0a1b2c"
*
* **Explanation:** No two adjacent characters have the same type in "0a1b2c". "a0b1c2", "0a1b2c", "0c2a1b" are also valid permutations.
*
* **Example 2:**
*
* **Input:** s = "leetcode"
*
* **Output:** ""
*
* **Explanation:** "leetcode" has only characters so we cannot separate them by digits.
*
* **Example 3:**
*
* **Input:** s = "1229857369"
*
* **Output:** ""
*
* **Explanation:** "1229857369" has only digits so we cannot separate them by characters.
*
* **Constraints:**
*
* * `1 <= s.length <= 500`
* * `s` consists of only lowercase English letters and/or digits.
**/
@SuppressWarnings("java:S5413")
public class Solution {
public String reformat(String s) {
List chars = new ArrayList<>();
List digits = new ArrayList<>();
for (char c : s.toCharArray()) {
if (c >= '0' && c <= '9') {
digits.add(c);
} else {
chars.add(c);
}
}
if (Math.abs(digits.size() - chars.size()) > 1) {
return "";
}
boolean isDigit = digits.size() > chars.size();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (isDigit) {
sb.append(digits.remove(0));
} else {
sb.append(chars.remove(0));
}
isDigit = !isDigit;
}
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy