当前位置: 面试刷题>> 识别名人 (经典算法题500道)


题目描述补充

题目: 识别名人——实现一个名人识别系统,该系统能够根据用户输入的名人姓名(或关键词),从给定的名人数据库中检索并返回相关的名人信息。名人信息至少包括姓名、职业(如演员、歌手、科学家等)和一张代表图片的URL。如果数据库中不存在该名人,则返回一条“未找到该名人”的消息。

示例数据库(模拟)

为了简化问题,我们假设名人数据库是以JSON格式存储在文件中的,内容如下(实际部署时可能存储在数据库、云服务等中):

[
    {
        "name": "周杰伦",
        "profession": "歌手, 演员, 导演, 音乐制作人",
        "image_url": "https://example.com/jaychou.jpg"
    },
    {
        "name": "爱因斯坦",
        "profession": "物理学家",
        "image_url": "https://example.com/einstein.jpg"
    },
    {
        "name": "玛丽莲·梦露",
        "profession": "演员, 模特, 制片人",
        "image_url": "https://example.com/marilyn.jpg"
    }
]

示例代码

PHP 示例

<?php
$celebrities = json_decode(file_get_contents('celebrities.json'), true);

function findCelebrity($name, $celebrities) {
    foreach ($celebrities as $celebrity) {
        if (strpos(strtolower($celebrity['name']), strtolower($name)) !== false) {
            return $celebrity;
        }
    }
    return "未找到该名人";
}

$name = "周杰伦"; // 示例输入
$result = findCelebrity($name, $celebrities);
echo is_array($result) ? json_encode($result) : $result;
?>

Python 示例

import json

def find_celebrity(name, celebrities):
    for celebrity in celebrities:
        if name.lower() in celebrity['name'].lower():
            return celebrity
    return "未找到该名人"

with open('celebrities.json', 'r') as file:
    celebrities = json.load(file)

name = "爱因斯坦"  # 示例输入
result = find_celebrity(name, celebrities)
print(result if isinstance(result, dict) else result)

JavaScript 示例

const fs = require('fs');
const path = require('path');

const celebrities = JSON.parse(fs.readFileSync(path.join(__dirname, 'celebrities.json'), 'utf8'));

function findCelebrity(name, celebrities) {
    for (const celebrity of celebrities) {
        if (celebrity.name.toLowerCase().includes(name.toLowerCase())) {
            return celebrity;
        }
    }
    return "未找到该名人";
}

const name = "玛丽莲·梦露"; // 示例输入
const result = findCelebrity(name, celebrities);
console.log(JSON.stringify(result, null, 2) || result);

注意事项

  • 以上代码示例均假设celebrities.json文件与代码文件位于同一目录下,或适当修改了文件路径。
  • 在实际应用中,可能需要考虑性能优化(如使用索引、缓存等),以及安全性(如防止SQL注入、XSS攻击等,尽管这里是文件读取)。
  • 码小课网站中有更多关于算法、数据结构、编程语言等的学习内容,欢迎访问学习。