力扣一日两练(17)——字典序排数、Bigram分词

104 阅读1分钟

题目:字典序排数

给定一个整数 n, 返回从 1 到 n 的字典顺序。

 

示例

给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。

请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。

 

使用语言JavaScript

/**
 * @param {number} n
 * @return {number[]}
 */
var lexicalOrder = function(n) {
    var a = [];
    for(let i =1;i<=n;i++){
        a.push(i);
    }
    a.sort();
    /*var b = a[11];
    var c = b.toString();
    var d = c[1];
    console.log(b,c,d);*/
    return a;
};

 

题目:Bigram 分词

给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。

对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。

 

示例

示例 1:

输入: text = "alice is a good girl she is a good student", first = "a", second = "good"
输出: ["girl","student"]

示例 2:

输入: text = "we will we will rock you", first = "we", second = "will"
输出: ["we","rock"]

 

提示:

  1. 1 <= text.length <= 1000
  2. text 由一些用空格分隔的单词组成,每个单词都由小写英文字母组成
  3. 1 <= first.length, second.length <= 10
  4. first 和 second 由小写英文字母组成

使用语言JavaScript

/**
 * @param {string} text
 * @param {string} first
 * @param {string} second
 * @return {string[]}
 */
var findOcurrences = function(text, first, second) {
    var a = text.split(" ");
    var b = [];
    for(var i=0;i<a.length-2;i++){
        if(a[i]==first && a[i+1]==second){
            b.push(a[i+2]);
        }
    }
    
    return b;
};