1. 程式人生 > 其它 >牛客華為機試HJ21

牛客華為機試HJ21

原題傳送門

1. 問題描述

2. Solution

1、思路
注意重複字串的處理
2、實現
Java

package huawei.HJ021;

import java.io.IOException;
import java.nio.file.Paths;
import java.util.Scanner;

public class Main {
    static Scanner in;
    static String inputFileName = "/Users/jun/Documents/Learn/JavaLearning/NowCoder/src/huawei/HJ020/input.txt";

    static {
        if (!"Linux".equals(System.getProperty("os.name"))) {
            try {
                in = new Scanner(Paths.get(inputFileName));
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            in = new Scanner(System.in);
        }
    }

    public static void main(String[] args) {
        String letters1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String letters2 = "bcdefghijklmnopqrstuvwxyza";
        String letters3 = "abcdefghijklmnopqrstuvwxyz";
        String letters4 = "22233344455566677778889999";

        while (in.hasNext()) {
            String line = in.nextLine();
            for (int i = 0; i < line.length(); i++) {
                char c = line.charAt(i);
                if (Character.isUpperCase(c))
                    System.out.print(letters2.charAt(letters1.indexOf(c)));
                else if (Character.isLowerCase(c))
                    System.out.print(letters4.charAt(letters3.indexOf(c)));
                else
                    System.out.print(c);
            }
        }
    }
}

Python

import sys

if sys.platform != "linux":
    sys.stdin = open("input/HJ21.txt")

letters1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letters2 = "bcdefghijklmnopqrstuvwxyza"
letters3 = "abcdefghijklmnopqrstuvwxyz"
letters4 = "22233344455566677778889999"

s = input().strip()
for c in s:
    if c.isupper():
        print(letters2[letters1.index(c)], end="")
    elif c.islower():
        print(letters4[letters3.index(c)], end="")
    else:
        print(c, end="")