package com.fishercoder.solutions; public class _640 { public static class Solution1 { /** * Reference: https://discuss.leetcode.com/topic/95203/concise-java-solution/7 */ public String solveEquation(String equation) { String[] parts = equation.split("="); int[] left = evaluate(parts[0]); int[] right = evaluate(parts[1]); if (left[0] == right[0] && left[1] == right[1]) { return "Infinite solutions"; } else if (left[0] == right[0]) { return "No solution"; } return "x=" + (right[1] - left[1]) / (left[0] - right[0]); } private int[] evaluate(String part) { int[] result = new int[2];//result[0] is the coefficient for x, result[1] is the coefficient for constants String[] tokens = part.split("(?=[+-])"); // ()for match group; ?= for match and include in res; [+-] means + or -; for (String token : tokens) { if (token.equals("+x") || token.equals("x")) { result[0]++; } else if (token.equals("-x")) { result[0]--; } else if (token.contains("x")) { result[0] += Integer.parseInt(token.substring(0, token.length() - 1)); } else { result[1] += Integer.parseInt(token); } } return result; } } }