public String oddOccur(String[] words) {
		if (words.length == 0) {
			return null;
		}
		if (words.length == 1) {
			return words[0];
		}
		Hashtable<String, Integer> hash = new Hashtable<String, Integer>();
		ArrayList<Integer> nums = new ArrayList<Integer>();
		int serial = 0;
		int target = 0;
		for (int i = 0; i < words.length; i++) {
			if (!hash.containsKey(words[i])) {
				hash.put(words[i], serial);
				nums.add(serial);
				serial++;
			} else {
				nums.add(hash.get(words[i]));
			}
		}

		for (int j = 0; j < nums.size(); j++) {
			target = target ^ nums.get(j);
		}

		for (String k : hash.keySet()) {
			if (hash.get(k) == target) {
				return k;
			}
		}
		return null;
	}