      "        if char in chars_set:\n",
      "            return False\n",
      "        else:\n",
      "            chars_set.add(char)\n",
      "    return True"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
 
</s> remove     "    return True"
 </s> add     "    return True\n",
    "\n",
    "test()" </s> remove     "print(unique_chars(''))\n",
    "print(unique_chars('foo'))\n",
    "print(unique_chars('bar'))"
 </s> add     "test()" </s> remove     "    return len(set(string)) == len(string)\n",
 </s> add     "    return len(set(string)) == len(string)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def test():\n",
    "    print(unique_chars(''))\n",
    "    print(unique_chars('foo'))\n",
    "    print(unique_chars('bar'))\n", </s> remove     "Since we cannot use additional data structures, this will eliminate the fast lookup O(1) time provided by our hash map.\n",
 </s> add     "Assume we cannot use additional data structures, which will eliminate the fast lookup O(1) time provided by our hash map.  \n",
    "    return True\n",
    "\n",
    "test()"
      "        if char in chars_set:\n",
      "            return False\n",
      "        else:\n",
      "            chars_set.add(char)\n",
    "    return True\n",
    "\n",
    "test()"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
keep keep keep keep replace keep keep keep keep keep
 Refactored test cases, tests are now called for all three algorithms.  Tweaked algorithm description for in-place approach. 
arrays-strings/unique_chars.ipynb