JavaScript--面试--算法--字符串-1

/**

* 描述:
* 实现一个算法,确定一个字符串的所有字符是否全都不同。
* 假使不允许使用额外的数据结构,又该如何处理?
* 细节:1)unicode字符集还是ASCII字符集
*         2)若是ASCII编码,长度大于256,则直接返回false
*/

 function no_multiple_str (str) {
     if(str.length > 256)  return false;
     var tmp = {};
     for(var i=0; i<str.length; i++){
         var char = str.charAt(i);
         if(tmp[char]) {
             return false;
         } else {
             tmp[char] = char;
         }
     }
     return true;
 }
 var str = "rept";
 console.log(‘no multiple char --> ‘ + no_multiple_str(str).toString());

/**
*使用位运算,减少空间复杂度
*/

function no_multiple_str_2 (str) {
     if(str.length > 256) return false;
     var checker = 0;
     for(var i=0; i<str.length; i++){
         var value = str.charCodeAt(i) - ‘a‘.charCodeAt();
          console.log(checker & (1 << value));
         if((checker & (1 << value)) > 0) {
             return false;
         }
         checker |= (1 << value);
     }
     return true;
}
var str = "repte";
console.log(‘no multiple char --> ‘ + no_multiple_str_2(str).toString());

/**

*最基本方法
*循环比较
*/

function no_multiple_str_3(str) {
     if(str.length > 256) return false;
     for(var i=0; i<str.length-1; i++){
         for(var j=i+1; j<str.length; j++) {
             if(str.charAt(i) == str.charAt(j)) {
                 return false;
             }
         }
     }
     return true;
}
var str = "rept";
console.log(‘no multiple char --> ‘ + no_multiple_str_3(str).toString());
时间: 2024-10-15 15:37:04

JavaScript--面试--算法--字符串-1的相关文章

#面试系列 字符串处理算法

面试系列 字符串处理算法 最大子序列和 动态规划法 思路:顺序遍历,判断sum是否大于等于0 时间复杂度:O(n) 空间复杂度:O(1) #include <iostream> #include <limits.h> using namespace std; int getMaxSum(int *arr, int size) { int maxSum = INT_MIN; //负的无穷大 int sum = 0; int curstart = 0; int start = 0; i

JavaScript面试的完美指南(开发者视角)

为了说明 JS 面试的复杂性,首先,请尝试给出以下结果: onsole.log(2.0 == "2" == new Boolean(true) == "1") 十有八九的会给出false, 其实运行结果是true,原因请看 这里. 1) 理解 JS 函数 函数是 JavaScript 的精华,是 JS 一等公民.JS 函数不仅仅是一个普通的函数,与其他语言不同,JS 函数可以赋值给变量,作为参数传递给另一个函数,也可以从另一个函数返回. console.log(sq

26个精选的JavaScript面试问题

为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 根据Stack Overflow 2018年年度调查报告,JavaScript已经连续6年保持最常用的编程语言的记录.对于一个全栈工程师,JavaScript可以说是一项必备语言,在面试中总会被问到.我整理了一下FullStack.Cafe上所有常见的JavaScript面试问题供大家参考: Q1: JavaScript中类型转换是怎样的?话题: JavaScript难度: 0在JavaScript中,在两个不同

FCC的javascript初级算法题解答

FCC上的javascript基础算法题 前一阵子做的基础算法题,感觉做完后收获还蛮大的,现在将自己的做法总结出来,供大家参考讨论.基本上做到尽量简短有效,但有些算法还可以继续简化,比如第七题若采用正则表达式来匹配,则一行代码就可以完成需求.欢迎大家提出不同解法.末尾有FCC的链接,感兴趣的同学可以去做一做. 1.翻转字符串 function reverseString(str) { var arr=str.split(""); str=arr.reverse().join("

RX学习笔记:FreeCodeCamp的JavaScript基本算法挑战

FreeCodeCamp的JavaScript基本算法挑战 https://www.freecodecamp.com 2016-07-03 JavaScript还不是非常熟悉,用已经会的知识来解这些题,估计有些算法会非常笨. 1.反转字符串 str.split("").reverse().join(""); 2.阶乘(阶乘0的结果需为1) function factorialize(num) { var n=1; for(var i=num;i>0;i--){

面试算法:利用堆栈计算逆向波兰表达式

更详细的讲解和代码调试演示过程,请参看视频 如何进入google,算法面试技能全面提升指南 给定一个四则运算表达式的字符串,如果该表达式满足逆向波兰表达式,那么该字符串要满足以下条件: 1: 该表达式含有一个数字字符或一串数字字符. 2:它拥有给定格式,如"A, B, .",其中A,B是逆向波兰表达式,句号.表示的是四种运算符"+,-,*,/"其中之一. 例如字符串"3,4,*,1,2,+,+"就满足逆向波兰表达式,该表达式的值为:3 * 4 +

5个经典的JavaScript面试基础问题

JavaScript程序员在IT领域中的需求量非常巨大.如果你非常精通JavaScript,你会有很多换工作.涨薪水的机会.但是在一家公司录用你之前,你必须顺利通过面试,证明你的技能.在本文中,我将向您展示5个关于JavaScript相关的问题,可以全面地测试面试者JavaScript技能和解决问题的能力.一起来看看这5个经典的JavaScript面试问题. 问题1:Scope作用范围 考虑下面的JavaScript代码: (function() { var a = b = 5; })(); c

面试算法实习生

昨天刚开始是笔试,完事后两面技术面,最后hr面.第一次面试算法实习生,在此做下笔记,记录面试问题与自己的不足. 笔试: 回来看牛客网,居然发现大部分都有,但可惜我还没刷. 回忆下知识点从网上搜出这套题好多都有(2,5,6,7,8,9,21,42,46,48,49,53,55) 一.选择题 1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法

25 个最基本的 JavaScript 面试问题及答案

1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱? 尽管 typeof bar === "object" 是检查 bar 是否对象的可靠方法,令人惊讶的是在JavaScript中 null 也被认为是对象! 因此,令大多数开发人员惊讶的是,下面的代码将输出 true (而不是false) 到控制台: var bar = null; console.log(typeof bar === "

25个最基本的JavaScript面试问题及答案

1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱? 尽管 typeof bar === "object" 是检查 bar 是否对象的可靠方法,令人惊讶的是在JavaScript中 null 也被认为是对象! 因此,令大多数开发人员惊讶的是,下面的代码将输出 true (而不是false) 到控制台: var bar = null; console.log(typeof bar === "