Toggle Case

beginner Strings

Problem

Read one line. Change every upper case letter to lower case and every lower case letter to upper case. Keep all other characters.

Constraints

  • 0 <= length <= 10^5, ASCII

Examples

Input

Hello World 123

Output

hELLO wORLD 123

Solutions

Best approachTime O(n)Space O(n)

Each character is checked: upper case to lower case, lower case to upper case, anything else is copied. Python also has s.swapcase() for this.

Same code works in Java810172125Basic features only, so nothing changes between versions.
/*
 * Problem : Process one line of text.
 * Input   : One line of text.
 * Output  : Swap the case.
 * Approach: Test each character.
 * Time    : O(n)
 * Space   : O(n)
 * Java    : 8 or newer.
 */
import java.util.Scanner;

public class Main {
    // This method solves the task. It receives the input and returns the answer.
    static String solve(String s) {
        // Step 1: Build the answer in a StringBuilder.
        StringBuilder result = new StringBuilder();

        // Step 2: Look at every character.
        for (char c : s.toCharArray()) {
            // Step 3: Upper case becomes lower case, lower case becomes upper case, others stay.
            if (Character.isUpperCase(c)) {
                result.append(Character.toLowerCase(c));
            } else if (Character.isLowerCase(c)) {
                result.append(Character.toUpperCase(c));
            } else {
                result.append(c);
            }
        }
        return result.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.hasNextLine() ? scanner.nextLine() : "";
        System.out.println(solve(s));
    }
}
Hints (1)
  1. How can you test if a character is upper case?