Я пытаюсь выяснить расстояние редактирования строк и столбцов, которое выглядит как именованные таблицы.Я могу достичь только для одного из столбцов, когда я пытаюсь повторить, что он дает мне те же значения, которые я не могу понять, где именно я делаю ошибку.
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File src = new File("C:\\Users\\coldisplay.xlsx");
FileInputStream file = new FileInputStream(src);
Workbook workbook = new XSSFWorkbook(file);
Sheet sheet1 = workbook.getSheetAt(0);
int rows = sheet1.getPhysicalNumberOfRows();
for (int sheetNumber = 1; sheetNumber < rows; sheetNumber++) {
String sheetName = sheet1.getRow(0).getCell(sheetNumber).getStringCellValue();
workbook.createSheet();
Sheet sheet2 = workbook.getSheetAt(sheetNumber);
workbook.setSheetName(sheetNumber, sheetName);
Row verticalRow = sheet2.createRow(0);
for (int Readingrowindex = 1; Readingrowindex < rows; Readingrowindex++) {
String ah = sheet1.getRow(Readingrowindex).getCell(1).getStringCellValue();
sheet2.createRow(Readingrowindex).createCell(0).setCellValue(ah);
verticalRow.createCell(Readingrowindex).setCellValue(ah);
}
for (int outIndex = 1; outIndex < rows; outIndex++) {
for (int index = 1; index < rows; index++) {
String row10 = sheet2.getRow(outIndex).getCell(0).getStringCellValue();
String row01 = sheet2.getRow(0).getCell(index).getStringCellValue();
int len1 = row10.length();
int len2 = row01.length();
int[][] dp = new int[len1 + 1][len2 + 1];
for (int i = 0; i <= len1; i++) {
dp[i][0] = i;
}
for (int j = 0; j <= len2; j++) {
dp[0][j] = j;
}
for (int i = 0; i < len1; i++) {
char c1 = row10.charAt(i);
for (int j = 0; j < len2; j++) {
char c2 = row01.charAt(j);
if (c1 == c2) {
dp[i + 1][j + 1] = dp[i][j];
} else {
int replace = dp[i][j] + 1;
int insert = dp[i][j + 1] + 1;
int delete = dp[i + 1][j] + 1;
int min = replace > insert ? insert : replace;
min = delete > min ? min : delete;
dp[i + 1][j + 1] = min;
}
}
}
// System.out.println(row10 + "\t" + row01 + "\t" + dp[len1][len2]);
sheet2.getRow(outIndex).createCell(index).setCellValue(dp[len1][len2]);
FileOutputStream fout = new FileOutputStream(src);
workbook.write(fout);
}
}
}