牛客华为机试HJ2


原题传送门

1. 问题描述

2. Solution

1、思路
遍历text,工作变量为c,c与key同时转为大写(或小写)比较,若相等则计数增1,遍历结束输出计数器即可。
2、实现
Java

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

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

    private static void solve(String s, char key) {
        int cnt = 0;
        char keyLowerCase = Character.toLowerCase(key);
        for (int i = 0; i < s.length(); i++) {
            char c = Character.toLowerCase(s.charAt(i));
            if (c == keyLowerCase)
                cnt++;
        }
        System.out.println(cnt);
    }
}

Python

import sys

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


def solve(text, key):
    cnt = 0
    for c in text:
        if c.lower() == key.lower():
            cnt += 1
    print(cnt)


while True:
    try:
        text = input().strip()
        key = input().strip()
        solve(text, key)
    except:
        break

3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)

相关