JS Challenge 2

JavaScript performance comparison

Revision 6 of this test case created

Info

The second code challenge @ DM

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
Michael K
function scrambler() {
  var match = 0
  var fail = 0;
  var clone = "this is my test string";
  var cloneLow = clone.toLowerCase();
  var cloneArr = cloneLow.split("");
  var orig = "i miss test";
  var origLow = orig.toLowerCase();
  var origArr = origLow.split("");
  for (var i = 0; i < clone.length; i++) {
    if (orig.indexOf(clone[i]) == -1) {
      fail++;
    } else {
      match++;
    }
  }
  if (match >= origArr.length) {
    return true;
  } else {
    return false;
  }
}
pending…
Max H
function StringScramble(str1, str2) {
  var arr = new Array(26);
  var index;
  var arr_length = arr.length;
  var str1_length = str1.length;
  var str2_length = str2.length;
  // Initialize the array to 0
  for (var i = 0; i < arr_length; i++) {
    arr[i] = 0;
  }

  str2 = str2.toLowerCase();
  // Put char counts into arr for str2
  for (var j = 0; j < str2_length; j++) {
    index = str2[j].charCodeAt(0) - 97;
    arr[index] = arr[index] + 1;
  }

  // Compare str1 to str2
  for (var k = 0; k < str1_length; k++) {
    index = str1[k].charCodeAt(0) - 97;
    if (arr[index] > 0) arr[index] = arr[index] - 1;
  }

  // If any of the elements in the arry is non 0,
  // there's a mismatch and str1 cannot be a permutation of str2
  for (var n = 0; n < arr_length; n++) {
    if (arr[n] != 0) return false;
  }
  return true;
}
pending…
Spencer W
var StringScramble = function(str1,str2){
        var scrambled = str1.split("").sort();
        var expected = str2.split("").sort();
        var result = [];
        var ii = scrambled.length;
        var jj = expected.length;      

        for(var i = 0;i<ii;i++) {
                for(var j = 0;j<jj;j++) {
                        if(scrambled[i] === expected[j]) {
                                result.push(scrambled[i]);
                                break;
                        }
                }

        }
        var scrambledString = result.toString();
        var expectedString = expected.toString();
       
        return (scrambledString === expectedString ? "true" : "false");

};
pending…
Jenni
function StringScramble(str1,str2){
  var s1 = str1.split(""),
      s2 = str2.split(""),
      l1 = s1.length,
      l2 = s2.length,
      a1 = []; // duplicate array accounts for double letters
 
  for(var j=0; j < l1; j++){
    if(a1[s1[j]]){
      a1[s1[j]]++;
    }else{
      a1[s1[j]]=1;
    }
  }

  for(var i=0; i < l2; i++){
    if(a1[s2[i]] > 0){
      a1[s2[i]]--;
    }else{
      return false;
    }
  }
  return true;
}
 
pending…
Frank
function StringScramble(str1, str2) {

  // Easy fail, if str1 isn't long enough
  if (str1.length < str2.length) {
    return false;
  }

  // Basic approach:
  // Sort the letters, then compare them
  // one by one, and bail out as soon as
  // we see a letter in s2 that s1 can't supply
  list1 = str1.split('').sort();
  list2 = str2.split('').sort();

  var c1 = list1.pop();
  var c2 = list2.pop();
  while (c1 && c2) {
    if (c1 == c2) {
      c1 = list1.pop();
      c2 = list2.pop();
    } else if (c1 < c2) {
        // str2 just asked for a char str1 can't provide
        return false;
    } else {
        // burn off excess str1 chars
        c1 = list1.pop();
    }
  }

  // a value leftover in c2 means that str1 dried up
  // before matching all of str2's needs.  Fail!
  return (!c2);
}

//trues
//StringScramble("cat", "act")
//StringScramble("cattle", "act")
//StringScramble("abbbba", "b")
//StringScramble("cattle", "")
//StringScramble("", "")

//falses
//StringScramble("cat", "actor")
//StringScramble("cattle", "lettuce")
//StringScramble("", "b")
 
pending…
Kyle
function StringScramble(str1, str2) {

    var count = 0;
   
    var lowerstr1 = str1.toLowerCase();
    var lowerstr2 = str2.toLowerCase();
    var splitarr1 = lowerstr1.split("");
    var splitarr2 = lowerstr2.split("");

    for (var i = 0; i < splitarr1.length; i++) {
        for (var j = 0; j < splitarr2.length; j++) {
            if (splitarr2[j] === splitarr1[i]) {
                 splitarr1[i] = "*";
                count++;          
            }
           
            if (count == splitarr2.length) {
                    return "true";
            }
        }
    }
    return "false"
   
}
 
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment