docs: private static String longestCommonSubstring(String strA, String strB) {
  		char[] chars_strA = strA.toCharArray();
  		char[] chars_strB = strB.toCharArray();
  		int m = chars_strA.length;
  		int n = chars_strB.length;
  
  		// 初始化矩阵数据,matrix[0][0]的值为0， 如果字符数组chars_strA和chars_strB的对应位相同，则matrix[i][j]的值为左上角的值加1， 否则，matrix[i][j]的值等于左上方最近两个位置的较大值， 矩阵中其余各点的值为0.
  		int[][] matrix = new int[m + 1][n + 1];
  		for (int i = 1; i <= m; i++) {
  			for (int j = 1; j <= n; j++) {
  				if (chars_strA[i - 1] == chars_strB[j - 1]) {
  					matrix[i][j] = matrix[i - 1][j - 1] + 1;
  				} else {
  					matrix[i][j] = Math.max(matrix[i][j - 1], matrix[i - 1][j]);
  				}
  			}
  		}
  
  		// 矩阵中，如果matrix[m][n]的值不等于matrix[m-1][n]的值也不等于matrix[m][n-1]的值， 则matrix[m][n]对应的字符为相似字符元，并将其存入result数组中。
  		char[] result = new char[matrix[m][n]];
  		int currentIndex = result.length - 1;
  		while (matrix[m][n] != 0) {
  			if (matrix[m][n] == matrix[m][n - 1]) {
  				n--;
  			} else if (matrix[m][n] == matrix[m - 1][n]) {
  				m--;
  			} else {
  				result[currentIndex] = chars_strA[m - 1];
  				currentIndex--;
  				n--;
  				m--;
  			}
  		}
  		return new String(result);
  	}