牛客華為機試HJ9
阿新 • • 發佈:2022-03-24
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)