解决方案电影标题中缺少代码的片段,进一步完成挑战

jas*_*704 -10 java json http

为了解决此难题,请编写HTTP GET方法以从特定电影数据库中检索信息。完成编辑器中的功能; 它有一个参数:一个字符串,substr。该功能必须执行以下任务:

  1. 查询https://jsonmock.hackerrank.com/api/movies/search/?Title=substr(其中substr是substr的值)。来自网站的查询响应是具有以下五个字段的JSON响应:

•页面:当前页面。

•per_page:每页的最大结果数。

•总数:标题中包含substring substr的此类电影的总数。

•total_pages:要获得所有结果必须查询的总页数。

•数据:包含电影信息的JSON对象数组,其中“标题”字段表示电影的标题。请注意,此字段是分页的,因此,为了合并分页,必须查询https://jsonmock.hackerrank.com/api/movies/search/?Title=substr&page=pageNumber,其中pageNumber是表示要显示的页面的整数喜欢观看(例如1、2等)。

  1. 创建一个名为title的字符串数组来存储元素总数。对于结果的每一页,将每个电影的标题存储在titles数组中。

  2. 按升序对标题进行排序,然后将其作为答案。

输入格式

单个字符串substr,表示您必须查询的子字符串。

输出格式

返回一个与电影标题相对应的字符串数组,这些电影标题中的susbtr以升序排列。

样本输入0

蜘蛛侠

样本输出0

  • 惊人的蜘蛛侠综合症
  • 格斗,飞行和驾驶:蜘蛛侠3的特技
  • 好莱坞的大师讲故事:蜘蛛侠现场
  • 意大利蜘蛛侠
  • 蜘蛛侠
  • 蜘蛛侠
  • 蜘蛛侠5
  • 蜘蛛侠和奶奶
  • 戛纳蜘蛛侠
  • 超人,蜘蛛侠或蝙蝠侠
  • 超凡蜘蛛侠T4首映特别
  • 蜘蛛侠之死
  • 他们叫我蜘蛛侠

说明0

对于此示例,我们希望所有电影标题都包含子字符串蜘蛛侠。查询https://jsonmock.hackerrank.com/api/movies/search/?Title=spiderman&page=1的响应为:

{ 
  "page": "1",
  "per_page": 10,
  "total": 13,
  "total_pages": 2,
  "data": [
{
  "Poster": "https://images-na.ssl-images-amazon.com/images/M/MV5BYjFhN2RjZTctMzA2Ni00NzE2LWJmYjMtNDAyYTllOTkyMmY3XkEyXkFqcGdeQXVyNTA0OTU0OTQ@._V1_SX300.jpg",
  "Title": "Italian Spiderman",
  "Type": "movie",
  "Year": "2007",
  "imdbID": "tt2705436"
},
{
  "Poster": "https://images-na.ssl-images-amazon.com/images/M/MV5BMjQ4MzcxNDU3N15BMl5BanBnXkFtZTgwOTE1MzMxNzE@._V1_SX300.jpg",
  "Title": "Superman, Spiderman or Batman",
  "Type": "movie",
  "Year": "2011",
  "imdbID": "tt2084949"
},
{
  "Poster": "N/A",
  "Title": "Spiderman",
  "Type": "movie",
  "Year": "1990",
  "imdbID": "tt0100669"
},
{
  "Poster": "N/A",
  "Title": "Spiderman",
  "Type": "movie",
  "Year": "2010",
  "imdbID": "tt1785572"
},
{
  "Poster": "N/A",
  "Title": "Fighting, Flying and Driving: The Stunts of Spiderman 3",
  "Type": "movie",
  "Year": "2007",
  "imdbID": "tt1132238"
},
{
  "Poster": "http://ia.media-imdb.com/images/M/MV5BMjE3Mzg0MjAxMl5BMl5BanBnXkFtZTcwNjIyODg5Mg@@._V1_SX300.jpg",
  "Title": "Spiderman and Grandma",
  "Type": "movie",
  "Year": "2009",
  "imdbID": "tt1433184"
},
{
  "Poster": "N/A",
  "Title": "The Amazing Spiderman T4 Premiere Special",
  "Type": "movie",
  "Year": "2012",
  "imdbID": "tt2233044"
},
{
  "Poster": "N/A",
  "Title": "Amazing Spiderman Syndrome",
  "Type": "movie",
  "Year": "2012",
  "imdbID": "tt2586634"
},
{
  "Poster": "N/A",
  "Title": "Hollywood's Master Storytellers: Spiderman Live",
  "Type": "movie",
  "Year": "2006",
  "imdbID": "tt2158533"
},
{
  "Poster": "N/A",
  "Title": "Spiderman 5",
  "Type": "movie",
  "Year": "2008",
  "imdbID": "tt3696826"
}]}
Run Code Online (Sandbox Code Playgroud)

查询https://jsonmock.hackerrank.com/api/movies/search/?Title=spiderman&page=2的响应为:

{
  "page": "2",
  "per_page": 10,
  "total": 13,
  "total_pages": 2,
  "data": [
{
  "Poster": "N/A",
  "Title": "They Call Me Spiderman",
  "Type": "movie",
  "Year": "2016",
  "imdbID": "tt5861236"
},
{
  "Poster": "N/A",
  "Title": "The Death of Spiderman",
  "Type": "movie",
  "Year": "2015",
  "imdbID": "tt5921428"
},
{
  "Poster": "https://images-na.ssl-images-amazon.com/images/M/MV5BZDlmMGQwYmItNTNmOS00OTNkLTkxNTYtNDM3ZWVlMWUyZDIzXkEyXkFqcGdeQXVyMTA5Mzk5Mw@@._V1_SX300.jpg",
  "Title": "Spiderman in Cannes",
  "Type": "movie",
  "Year": "2016",
  "imdbID": "tt5978586"
}]}
Run Code Online (Sandbox Code Playgroud)

每个响应页面中每个电影的“标题”字段的相应值为:

  • 意大利蜘蛛侠
  • 超人,蜘蛛侠或蝙蝠侠
  • 蜘蛛侠
  • 蜘蛛侠
  • 格斗,飞行和驾驶:蜘蛛侠3的特技
  • 蜘蛛侠和奶奶
  • 超凡蜘蛛侠T4首映特别
  • 惊人的蜘蛛侠综合症
  • 好莱坞的大师讲故事:蜘蛛侠现场
  • 蜘蛛侠5
  • 他们叫我蜘蛛侠
  • 蜘蛛侠之死
  • 戛纳蜘蛛侠

然后,我们将每个标题存储在titles数组中,以升序对其进行排序,然后将其作为答案返回。

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.net.*;
import com.google.gson.*;

public class Solution {
/*
 * Complete the function below.
 */

static String[] getMovieTitles(String substr) {

      //complete function here
}


public static void main(String[] args) throws IOException{
    Scanner in = new Scanner(System.in);
    final String fileName = System.getenv("OUTPUT_PATH");
    BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
    String[] res;
    String _substr;
    try {
        _substr = in.nextLine();
    } catch (Exception e) {
        _substr = null;
    }

    res = getMovieTitles(_substr);
    for(int res_i=0; res_i < res.length; res_i++) {
        bw.write(String.valueOf(res[res_i]));
        bw.newLine();
    }

    bw.close();
    } 
}
Run Code Online (Sandbox Code Playgroud)

小智 14

这就是你要找的:

String[] getMovieTitles(String substr) {
String response;
int startPage = 1;
int totalPages = Integer.MAX_VALUE;
List<String> titles = new ArrayList<>();
while (startPage <= totalPages) {
  try {
    URL obj = new URL("https://jsonmock.hackerrank.com/api/movies/search/?Title=" + substr + "&page=" + startPage);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    con.setRequestMethod("GET");
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    while ((response = in.readLine()) != null) {
      JsonObject convertedObject = new Gson().fromJson(response, JsonObject.class);
      totalPages = convertedObject.get("total_pages").getAsInt();
      JsonArray data = convertedObject.getAsJsonArray("data");
      for (int i = 0; i < data.size(); i++) {
        String title = data.get(i).getAsJsonObject().get("Title").getAsString();
        titles.add(title);
      }
    }
    in.close();
    startPage++;
  } catch (Exception ex) {
    ex.printStackTrace();
  }

}
Collections.sort(titles);
return titles.toArray(new String[0]);
}
Run Code Online (Sandbox Code Playgroud)


a24*_*918 5

这是一个Javascript答案。

var https = require('https');

function fetchData(substr) {
    pageNum = 1;
    let url = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + pageNum;
    https.get(url, (res) => {
        res.setEncoding('utf8');
        res.on('data', function(body) {
            let dataRec = JSON.parse(body);
            let movies = dataRec.data;
            let totPages = dataRec.total_pages;
            let sortArray = [];
            movies.map((a) => {
              sortArray.push(a.Title)
            })
            for (let i = 2; i <= totPages; i++) {
                let newPage = i;
                let url1 = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + newPage;
                https.get(url1, (res) => {
                    res.setEncoding('utf8');
                    res.on('data', function(body) {
                        let newData = JSON.parse(body);
                        let newMovies = newData.data;
                        for (let i = 0; i < newMovies.length; i++) {
                            sortArray.push(newMovies[i].Title);
                        }
                        console.log(sortArray.sort());
                    })
                })
            }
        })
    })
}

//primary function 
function getMovieTitles(substr) {
    fetchData(substr);
}

getMovieTitles("spiderman");
Run Code Online (Sandbox Code Playgroud)