- Executors
-
Learn
Learn Python Runnable examples, NumPy, pandas, and more Learn AINeural networks, ML and LLMs from scratch Learn C & C++ Pointers, memory, STL, and modern C++ Learn C#C# basics, OOP, LINQ, async, and .NET exercises Learn MatplotlibLine, bar, scatter and pie charts with live visualizers Python Algorithms Search, sorting, recursion, and visualizers O(n) C & C++ Algorithms Compare algorithms implemented in C and C++ Coding for Kids Learn to code by playing!
- ChallengesNew
- For TeachersNew
- Updates
- Buy me a coffee
GPT-style tokenizers use Byte Pair Encoding: start from single characters and repeatedly merge the most common pair of neighbors into a new symbol.
- Split every word in
wordsinto characters. Repeated words count multiple times. - Count every pair of adjacent symbols across all words.
- Pick the most frequent pair. If pairs tie, pick the one that is smallest when you compare (first symbol, second symbol) as strings.
- Replace every occurrence of that pair, left to right, with the merged symbol, and record the merged symbol.
- Repeat
num_mergestimes, or stop early when no word has two symbols left.
Implement bpe_merges(words, num_merges).
Input
words: The training words (lowercase letters).
num_merges: How many merges to learn.
Output
Return the merged symbols in the order they were learned.
Constraints
1 ≤ number of words ≤ 1,000, 1 ≤ length of each word ≤ 30
0 ≤ num_merges ≤ 200
Examples
Example 1
Input:
words = ["low", "lower", "lowest"]
num_merges = 2
Expected output:
["lo", "low"]
Explanation
Pairs: "l o" and "o w" appear 3 times each; the tie goes to "l o" ("l" < "o"), giving "lo". Now "lo w" appears 3 times, giving "low". Result: ["lo", "low"].
Example 2
Input:
words = ["aaa"]
num_merges = 3
Expected output:
["aa", "aaa"]
Explanation
"aaa" has the pair "a a" twice. Merging left to right gives "aa" + "a". Then "aa a" merges into "aaa", and the word is a single symbol, so the third merge has nothing to do. Result: ["aa", "aaa"].
References
-
Example 1 Not runInput:
words = ["low", "lower", "lowest"] num_merges = 2Expected output:["lo", "low"]Your output -
Example 2 Not runInput:
words = ["aaa"] num_merges = 3Expected output:["aa", "aaa"]Your output
4 hidden tests also run when you submit. If your code fails one, you'll see that test. Solve the challenge to see them all.
Online Java Compiler
Write, compile, run, and debug Java code online in a full-featured browser IDE. Work with multiple files, save your workspace, and share or collaborate in real time - no setup required.
🚀 260,405 total executions (5,851 this month)
Practice Java with coding challenges
Solve hands-on problems right in this editor: run the sample tests, submit, and get an AI code review.
☕ About This Java Online Executor
The CodeUtility Java Executor lets you write and run Java programs directly in your browser - no installation, JDK setup, or IDE required. It’s powered by a secure sandbox that supports real Java runtime versions 8, 11, 17, 21, and the latest.
This tool compiles and executes Java code in the cloud using a real javac compiler and Java runtime
environment, so you can test classes, methods, and logic exactly as they would behave locally.
Whether you’re practicing object-oriented programming, preparing for interviews, or testing snippets before integration, the CodeUtility Java Executor provides a fast and reliable environment to run real Java code instantly from any device.
More than a code runner
Use a multi-file editor, an isolated execution terminal, runtime-specific libraries, persistent workspaces, sharing, and real-time collaboration from the same executor.
How to use this executor?
Choose a runtime, open or create a file, write your code, and select Run. Output appears in the terminal, while signed-in users can keep files in a workspace, install libraries, and collaborate through shares.
- Select a version and edit the current file or open another workspace file.
- Run the code, provide input in the terminal when requested, and review saved run history.
- Use libraries, workspace tools, sharing, and chat when your task needs more than one snippet.
💡 Java Basics & Examples You Can Try Above
1. Declaring Variables and Constants
Java requires you to declare the type of each variable. Use final for constants.
int age = 30;
double pi = 3.14159;
char grade = 'A';
String name = "Alice";
boolean isActive = true;
// Constants
final int MAX_USERS = 100;
final String COMPANY = "CodeUtility";
2. Conditionals (if / switch)
Use if, else if, and switch for control flow.
int x = 2;
if (x == 1) {
System.out.println("One");
} else if (x == 2) {
System.out.println("Two");
} else {
System.out.println("Other");
}
switch (x) {
case 1:
System.out.println("One");
break;
case 2:
System.out.println("Two");
break;
default:
System.out.println("Other");
}
3. Loops
Use for, while, and do-while for iteration.
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
int n = 3;
while (n > 0) {
System.out.println(n);
n--;
}
4. Arrays
Arrays hold fixed-size sequences of the same type.
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]);
5. ArrayList Manipulation
Use ArrayList for dynamic-sized lists.
import java.util.ArrayList;
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.remove(Integer.valueOf(2));
for (int num : nums) {
System.out.print(num + " ");
}
6. Console Input/Output
Use Scanner for input and System.out for output.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name);
7. Functions
Define methods with return types and parameters.
public static int add(int a, int b) {
return a + b;
}
System.out.println(add(3, 4));
8. HashMaps
Use HashMap for key-value storage.
import java.util.HashMap;
HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
System.out.println(ages.get("Alice"));
9. Exception Handling
Use try and catch to handle runtime exceptions.
try {
throw new Exception("Something went wrong");
} catch (Exception e) {
System.out.println(e.getMessage());
}
10. File I/O
Use Files and Paths from java.nio.file for file handling.
import java.nio.file.*;
import java.io.IOException;
Files.writeString(Paths.get("file.txt"), "Hello File");
String content = Files.readString(Paths.get("file.txt"));
System.out.println(content);
11. String Manipulation
Java strings support many methods like length(), substring(), and contains().
String text = "Hello World";
System.out.println(text.length());
System.out.println(text.substring(0, 5));
System.out.println(text.contains("World"));
12. Classes & Objects
Java supports object-oriented programming using classes and instances.
class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Hi, I'm " + name);
}
}
Person p = new Person("Alice");
p.greet();