문제 설명
Agoji 씨는 특수한 문자열을 무작위로 섞은 뒤섞인 문자열을 받았습니다. 스팅은 특정 단어를 여러 번 결합하여 형성되는 경우에만 스페셜이라고 합니다. 특수 단어는 숫자(0 <= 숫자 < 10)를 해당 단어로 매핑하는 것입니다. 예를 들어 '0'을 '0'으로 매핑, '1'을 '1'로 매핑 등이 있습니다. Agoji 씨는 섞인 문자열을 가장 작은 특수 숫자로 변환하도록 요청받습니다. 특수 숫자는 선행 0이 없는 숫자(0 <= 숫자 < 10)를 사용하여 형성된 숫자입니다. Agoji 씨는 숫자와 문자열에 서툴러서 도움을 요청합니다.
입력 형식
입력의 첫 번째 줄에는 T, 테스트 사례 수, 1 <= T <= 100이 포함됩니다. 각 테스트 사례에 대해 별도의 줄에 섞인 문자열이 있습니다.
1 <= 길이 <= 100000
출력 형식
각 테스트 사례에 대해 새 줄에서 가장 작은 특수 숫자는 문자열 형식입니다. 출력에 대한 몇 가지 참고 사항: 섞인 문자열은 항상 하나 이상의 유효한 특수 문자열로 변환할 수 있습니다. 섞인 문자열에는 작은 영어 알파벳만 포함됩니다. 섞인 문자열에 0만 포함된 경우 "0"을 출력해야 합니다.
접근하다:
def smallest_special_number(string):
num_to_word = {
'0' : 'zero',
'1' : 'one',
'2' : 'two',
'3' : 'three',
'4' : 'four',
'5' : 'five',
'6' : 'six',
'7' : 'seven',
'8' : 'eight',
'9' : 'nine',
}
char_freq = {}
for char in string:
if char not in char_freq:
char_freq[char] = 1
else:
char_freq[char] += 1
digit_freq = {}
for digit in num_to_word:
word = num_to_word[digit]
count = char_freq.get(word[0], 0)
for char in word[1:]:
count = min(count, char_freq.get(char, 0))
digit_freq[digit] = count
result = ''
for num in sorted(digit_freq.keys()):
result += num * digit_freq[num]
# Handle special cases
if len(result) == 0:
return '0'
if result[0] == '0':
zeros = 1
for i in range(1, len(result)):
if result[i] == '0':
zeros += 1
else:
break
if zeros == len(result):
return '0'
if zeros != 0:
result = result[i] + '0' * zeros + result[i+1:]
return result
# Read input and process test cases
s = "ewtooetzrowon"
print(smallest_special_number(s))
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
scanner.nextLine();
while (t-- > 0) {
String s = scanner.nextLine();
String result = smallestSpecialNumber(s);
System.out.println(result);
}
scanner.close();
}
public static String smallestSpecialNumber(String string) {
Map<Character, String> numToWord = new HashMap<Character, String>() {{
put('0', "zero");
put('1', "one");
put('2', "two");
put('3', "three");
put('4', "four");
put('5', "five");
put('6', "six");
put('7', "seven");
put('8', "eight");
put('9', "nine");
}};
Map<Character, Integer> charFreq = new HashMap<>();
for (char c : string.toCharArray()) {
charFreq.put(c, charFreq.getOrDefault(c, 0) + 1);
}
Map<Character, Integer> digitFreq = new HashMap<>();
for (char digit : numToWord.keySet()) {
String word = numToWord.get(digit);
int count = charFreq.getOrDefault(word.charAt(0), 0);
for (int i = 1; i < word.length(); i++) {
count = Math.min(count, charFreq.getOrDefault(word.charAt(i), 0));
}
digitFreq.put(digit, count);
}
StringBuilder sb = new StringBuilder();
for (char digit = '0'; digit <= '9'; digit++) {
int freq = digitFreq.getOrDefault(digit, 0);
sb.append(String.valueOf(digit).repeat(freq));
}
String result = sb.toString();
// Handle special cases
if (result.length() == 0) {
return "0";
}
if (result.charAt(0) == '0') {
int zeros = 1;
int i = 1;
for (; i < result.length(); i++) {
if (result.charAt(i) == '0') {
zeros++;
} else {
break;
}
}
if (zeros == result.length()) {
return "0";
}
result = result.charAt(i) + "0".repeat(zeros) + result.substring(i + 1);
}
return result;
}
}
이 설명이 도움이 되셨다면 미디엄 과 유튜브 에서 저를 팔로우 해주세요 .
박수를 클릭하여 다른 사용자에게 이 기사를 찾는 도움말 알고리즘입니다. :)
facebook.com에 요청하면 컴퓨터가 도메인 이름을 조회하여 해당 도메인 이름을 IP 주소로 변환하므로 컴퓨터가 해당 연결을 만들 수 있습니다.
소개 Apache Kafka는 대규모, 높은 처리량, 내결함성 실시간 데이터 스트리밍을 처리하는 오픈 소스 분산 스트리밍 플랫폼입니다. 이 시스템은 생산자가 주제에 메시지를 게시하고 소비자가 해당 주제를 구독하여 메시지를 소비하는 게시-구독 모델을 기반으로 합니다.
당신이 자라면 세상은 있는 그대로이고 당신의 삶은 단지 세상 안에서 당신의 삶을 사는 것이며, 결코 당신의 생명을 위험에 빠뜨리지 않고, 정해진 길을 따르고 결국 죽고, 벽을 너무 세게 치세요.하지만 그것은 매우 제한된 삶입니다.
페트병, 유리병, 알루미늄캔, 그린에너지 패키지를 무심코 버린 적이 몇 번이나 되셨나요? 재활용에 대한 대가로 무언가를 얻을 수 있기를 몇 번이나 바랐습니까? 당신이 대부분의 사람들과 같다면 대답은 아마도 여러 번일 것입니다. 재활용은 종종 번거로움, 자질구레한 일 또는 즉각적이거나 실질적인 혜택을 가져오지 않는 의무로 간주됩니다.
Hayden이 함께 저녁을 보낸 후 Katie를 대학 기숙사로 데려다 준 것은 자정 이후였습니다. 그녀는 아침에 일찍 수업이 있었고 전날 밤 그와 함께 지낸 후 다시 옷을 갈아입지 않았습니다.
우리는 종종 우리에게 좋다고 알고 있는 것을 구현하는 데 어려움을 겪고 있습니다. 중요한 다른 사람에게 우리가 그들을 사랑한다고 말하는 것부터 해적처럼 이야기하는 것을 기억하는 것까지, 그들이 이미 그런 일을 하고 있기 때문에 하루, 일주일 또는 한 달의 이벤트가 필요하지 않다고 주장하는 사람들이 항상 있을 것입니다.