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

牛客華為機試HJ9

原題傳送門

1. 問題描述

2. Solution

1、思路分析
用陣列充當自定義雜湊表,記錄已經出現過的數字。

2、程式碼實現
Java實現

package huawei.HJ009;

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

public class Main {
    static Scanner in;

    public static void main(String[] args) throws IOException {
        if (!"Linux".equals(System.getProperty("os.name"))) {
            in = new Scanner(Paths.get("/Users/jun/Learn/JavaLearning/NowCoder/src/huawei/HJ009/input.txt"));
        } else {
            in = new Scanner(System.in);
        }
        while (in.hasNext()) {
            String s = in.nextLine();
            solve(s);
        }
    }

    private static void solve(String s) {
        int[] seen = new int[10];
        for (int i = s.length() - 1; i >= 0; i--) {
            char c = s.charAt(i);
            if (seen[c - '0'] == 1)
                continue;
            seen[c - '0'] = 1;
            System.out.print(c);
        }

    }
}

Python實現

import sys

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

s = input().strip()
seen = [0] * 10
for c in s[::-1]:
    int_c = int(c)
    if seen[int_c]:
        continue
    print(c, end="")
    seen[int_c] = 1

3、複雜度分析
時間複雜度: O(n)
空間複雜度: O(1)