code: def extract_atoms(molecule):
      if molecule == '':
          return molecule
      try:
          return float(molecule)
      except BaseException:
          pass
      atoms = ''
      if not molecule[0].isalpha():
          i = 0
          while not molecule[i].isalpha():
              i += 1
          prefactor = float(molecule[:i])
          if prefactor < 0:
              prefactor = abs(prefactor)
              sign = '-'
          else:
              sign = ''
          molecule = molecule[i:]
      else:
          prefactor = 1
          sign = ''
      for k in range(len(molecule)):
          if molecule[k].isdigit():
              for j in range(int(molecule[k]) - 1):
                  atoms += molecule[k - 1]
          else:
              atoms += molecule[k]
      if prefactor % 1 == 0:
          atoms *= int(prefactor)
      elif prefactor % 1 == 0.5:
          atoms_sort = sorted(atoms)
          N = len(atoms)
          atoms = ''
          for n in range(N):
              for m in range(int(prefactor - 0.5)):
                  atoms += atoms_sort[n]
              if n % 2 == 0:
                  atoms += atoms_sort[n]
      return sign + ''.join(sorted(atoms))