public int numDecodings(String s) {

		if (s == null || s.length() == 0)
			return 0;
		if (s.charAt(0) == '0')
			return 0;

		if (s.length() == 1)
			return 1;
		if (s.length() == 2) {
			if (s.charAt(1) == 0)
				return 1;
			else if (Integer.parseInt(s.substring(0, 2)) > 26)
				return 1;
			else
				return 2;
		}

		if (s.charAt(s.length() - 1) == '0')
			return numDecodings(s.substring(0, s.length() - 2));
		else {
			int i = Integer.parseInt(s.substring(s.length() - 2, s.length()));
			if (i > 26)
				return numDecodings(s.substring(0, s.length() - 1));
			else
				return numDecodings(s.substring(0, s.length() - 1)) + numDecodings(s.substring(0, s.length() - 2));
		}
	}