     "metadata": {},
     "source": [
      "## Test Cases\n",
      "\n",
      "* \"\" -> True\n",
      "* \"foo\" -> False\n",
      "* \"bar\" -> True"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
 
</s> remove     "## Pythonic Solution(s)"
 </s> add     "## Algorithm 3: In-Place\n",
    "\n",
    "Since we cannot use additional data structures, this will eliminate the fast lookup O(1) time provided by our hash map.\n",
    "* Scan each character\n",
    "* For each character:\n",
    "    * Scan all [other] characters in the array\n",
    "        * Exluding the current character from the scan is rather tricky in Python and results in a non-Pythonic solution\n",
    "        * If there is a match, return False\n",
    "* Return True\n",
    "\n",
    "Algorithm Complexity:\n",
    "* Time: O(n^2)\n",
    "* Space: In-place"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Code: In-Place" </s> remove     "## Problem: Implement an algorithm to determine if a string has all unique characters"
 </s> add     "## Problem: Implement an algorithm to determine if a string has all unique characters\n",
    "\n",
    "* [Clarifying Questions](#Clarifying-Questions)\n",
    "* [Test Cases](#Test-Cases)\n",
    "* [Algorithm 1: Sets and Length Comparison](#Algorithm-1:-Sets-and-Length-Comparison)\n",
    "* [Code: Sets and Length Comparison](#Code:-Sets-and-Length-Comparison)\n",
    "* [Algorithm 2: Hash Map Lookup](#Algorithm-2:-Hash-Map-Lookup)\n",
    "* [Code: Hash Map Lookup](#Code:-Hash-Map-Lookup)\n",
    "* [Algorithm 3: In-Place](#Algorithm-3:-In-Place)\n",
    "* [Code: In-Place](#Code:-In-Place)" </s> remove     "## Code"
 </s> add     "## Code: Hash Map Lookup" </s> remove     "## Code"
 </s> add     "## Code: Sets and Length Comparison" </s> remove     "* Time: O(n).\n",
    "* Space: Additional O(m), where m is the number of unique characters in the hash map."
 </s> add     "* Time: O(n)\n",
    "* Space: Additional O(m), where m is the number of unique characters in the set"
    "* '' -> True\n",
    "* 'foo' -> False\n",
    "* 'bar' -> True"
     "metadata": {},
     "source": [
      "## Test Cases\n",
      "\n",
    "* '' -> True\n",
    "* 'foo' -> False\n",
    "* 'bar' -> True"
    "* '' -> True\n",
    "* 'foo' -> False\n",
    "* 'bar' -> True"
    "* '' -> True\n",
    "* 'foo' -> False\n",
    "* 'bar' -> True"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
keep keep keep keep replace replace replace keep keep keep keep keep
 Reworked algorithm descriptions.  Added notebook index.  Minor cleanup. 
arrays-strings/unique_chars.ipynb