码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-03-27 19:36:48      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

/**

* 描述:
* 实现一个算法,确定一个字符串的所有字符是否全都不同。
* 假使不允许使用额外的数据结构,又该如何处理?
* 细节: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());

 

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

标签:

原文地址:http://www.cnblogs.com/ppyst/p/5326405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!