牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

慈云数据 2024-03-22 技术支持 75 0

题目

在这里插入图片描述

题目链接:

https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc

思路

	注意:必须要新增一个,或者删除一个,或者替换一个,所以不能相等
	1.如果s和t相等,返回false,如果s和t长度差大于1,返回false
	2.s比t长,s删除【忽略】一个,比较是否相等
	3.s比t短,t要删除【忽略】一个,比较是否相等
	4.s和t一样长,那么找到第一个不同的字符的位置,过滤掉。比较后面的是否相等

参考答案Java

import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param t string字符串
     * @return bool布尔型
     */
    public boolean editdistance (String s, String t) {
        int n = s.length();
        int m = t.length();
        int diff = Math.abs(n - m);
        if (s.equals(t) || diff > 1  ) return false;
        int i = 0, j = 0;
        while (i  m) { //s比t多一个,那s就删一个
            return s.substring(i + 1).equals(t.substring(j));
        } else if (n  

参考答案Go

package main
//import "fmt"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @param t string字符串
 * @return bool布尔型
 */
func editdistance(s string, t string) bool {
	n := len(s)
	m := len(t)
	diff := m - n
	if n > m {
		diff = n - m
	}
	if s == t || diff > 1 {
		return false
	}
	i := 0
	j := 0
	for i  m { //s 比t多一个,s删一个
		return s[i+1:] == t[j:]
	} else if n  

参考答案PHP

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon