zoukankan      html  css  js  c++  java
  • 161.One Edit Distance

        

    /* * 161.One Edit Distance * 2016-6-2 by Mingyang * Given two strings S and T, determine if they are both one edit distance apart. * 两个字符串一样长的时候,说明有一个替换操作,我们只要看对应位置是不是只有一个字符不一样就行了 * 一个字符串比另一个长1,说明有个增加或删除操作,我们就找到第一个对应位置不一样的那个字符, * 如果较长字符串在那个字符之后的部分和较短字符串那个字符及之后的部分是一样的,则符合要求 * 如果两个字符串长度差距大于1,肯定不对 * 注意,在两个相差距离1的时候是不能用contain的,因为有可能差在中间,要先找到第一个不一样的 * 然后后面的substring必须相等 */ public boolean isOneEditDistance(String s, String t) { int m = s.length(), n = t.length(); if(m == n) return isOneModified(s, t); if(m - n == 1) return isOneDeleted(s, t); if(n - m == 1) return isOneDeleted(t, s); // 长度差距大于2直接返回false return false; } private boolean isOneModified(String s, String t){ boolean modified = false; // 看是否只修改了一个字符 for(int i = 0; i < s.length(); i++){ if(s.charAt(i) != t.charAt(i)){ if(modified) return false; modified = true; } } return modified; } public boolean isOneDeleted(String longer, String shorter){ // 找到第一组不一样的字符,看后面是否一样 for(int i = 0; i < shorter.length(); i++){ if(longer.charAt(i) != shorter.charAt(i)){ return longer.substring(i + 1).equals(shorter.substring(i)); } } return true; }
  • 相关阅读:
    JQuery是继prototype之后又一个优秀的Javascript库
    IAsyncResult接口
    Asynchronous Programming Patterns
    操作数据库的时候,使用自带的DbProviderFactory类 (涉及抽象工厂和工厂方法)
    8.2.4对象之间的关系
    git squash 和 git rebase
    8.2.3多态性 第8章 面向对象编程简介
    github的使用教程
    第7章 调试和错误处理 7.1.1 VS中的调试
    markdown的语法说明
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5555599.html
Copyright © 2011-2022 走看看