`
MouseLearnJava
  • 浏览: 467432 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

判断两个字符串是否互为变形词的几种方法

阅读更多

本文给出几个判断两个字符串是否互为变形词的方法。

方法一 : 借助Arrays工具类实现

 

import java.util.Arrays;
 
public class AnagramCheck {
 
    public boolean isAnagram(String s1, String s2) {
        if (s1 == null || s2 == null || s1.length() != s2.length()) {
            return false;
        }
        char[] ch1 = s1.toCharArray();
        char[] ch2 = s2.toCharArray();
        Arrays.sort(ch1);
        Arrays.sort(ch2);
        return Arrays.equals(ch1, ch2);
    }
 
}

 当然,方法一并不是最快的方法,但是在绝大部分情况下已经足够好了。

方法二 : 使用String的indexOf方法判断

在该方法中,从头开始判断各个字符是否存在于对方的字符串中,只要有一个不存在,则返回false。

public class AnagramCheck {
 
    public boolean isAnagram(String s1, String s2) {
 
        if (s1 == null || s2 == null || s1.length() != s2.length()) {
            return false;
        }
        int i = 0;
        int j = 0;
 
        //不需要判断t j< s2.length()因为s1 和 s2的长度是一样的
        while (i < s1.length()) {
            if (s1.indexOf(s2.charAt(j)) < 0 || s2.indexOf(s1.charAt(i)) < 0)
                return false;
            i++;
            j++;
        } 
 
        return true;
    }//O(n log n)
 
}

 

方法三 : 适用于8位字符集的检测方法

该方法适合只包含8位字符集的字符串不适合包含中文的字符串比较。

 

public class AnagramCheck {
 
    public boolean isAnagram(String s1, String s2) {
 
        if (s1 == null || s2 == null || s1.length() != s2.length()) {
            return false;
        }
 
        /* 假设是8位字符集 */
        int[] counts = new int[256];
 
        int len = s1.length();
 
        for (int index = 0; index < len; index++) {
            if((int) s1.charAt(index) > 0 && (int) s2.charAt(index) > 0){
                counts[(int) s1.charAt(index)]++;
                counts[(int) s2.charAt(index)]--;
            }
        }
 
        for (int index = 0; index < len; index++)
            if (counts[index] > 0)
                return false;
        return true;
    }
 
}

 

原文地址 http://thecodesample.com/?p=864

更多的例子请访问 http://thecodesample.com/

 

0
0
分享到:
评论

相关推荐

    JavaScript中判断两个字符串是否相等的方法

    在JavaScript中判断两个字符串是否相等是编程基础中的重要内容,尤其对于初学者来说,理解字符串相等性的判断方法对于编写有效的代码至关重要。首先,要了解JavaScript提供了两种相等性运算符:“==”和“===”。这...

    java判断一个字符串是否对称

    自己编的java判断一个字符串是否对称的,忘指导。判断一个字符串是否是对称字符串(方法改进) (一个一个比较) 例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串

    判断字符串是否中心对称

    中心对称字符串的判断通常可以通过以下几种方法实现: 1. **反转法**:将字符串分为两部分,一部分是前半部分,另一部分是从中心开始到末尾的后半部分。如果这两部分通过反转后相等,则字符串是中心对称的。例如,...

    Labview-比较两个字符串,显示相同字符个数

    Labview-比较两个字符串,显示相同字符个数

    有两个字符串A,B,判断B是不是A的子串

    题目中给出的标签“判断子串”提示我们,我们需要编写一个程序或函数,接受两个字符串作为输入,并返回一个布尔值,表示第二个字符串是否为第一个字符串的子串。 在编程中,有多种方法可以实现这个功能。以下是一些...

    [字符串]字符串提取(获取两个字符串中间的字符串)

    在标准的字符串方法中,没有直接提供一个功能可以获取两个已知字符串之间的子串,但我们可以通过结合几个基本方法来实现这个功能。 1. **IndexOf**:此方法用于查找指定字符串在当前字符串中的第一次出现位置。...

    比较两个字符串是否相等(用指针完成)

    使用指针来判断两个字符串是否相等 cout请分别输入两个字符串str1和str2:"; cin.getline(str1,100); cin.getline(str2,100);

    汇编语言 微机原理 判断两个字符串是否相等

    用汇编语言编写的程序,用来判断两个字符串是否想等,如果相等,显示match,不相等,显示no match。。

    js 实现 判断两个字符串日期的大小

    js 实现 判断两个字符串日期的大小! 值得下载看看!资源免费,大家分享!!

    比较两个字符串之间相似度

    用途:可用于论文抄袭检测、DNA等。...算法实现思路:通过对一个字符串插入、删除、替换转变成另一个字符串所需要的步骤称为距离,计算两个字符串之间的距离,从而可以得到两个字符串之间的相似度。

    使用最短编辑距离算法判断两个字符串的相似度

    字符串相似度是评估两个字符串之间相似程度的一种度量。在很多情况下,我们不关心字符串是否完全相同,而是关注它们之间的相似性。例如,拼写检查、自动补全、模糊搜索等功能就利用了字符串相似度的计算。 最短编辑...

    关于字符串相等的比较

    在Java中,有多种方法可以用来比较两个字符串是否相等: 1. **使用 `equals` 方法:** - 这是最常用的比较两个字符串是否相等的方法。 - 示例中的代码使用了 `s.equals(s2)` 来比较用户输入的字符串 `s` 是否与预...

    判断字符串是否是空

    为了方便使用,可以创建一个分类来扩展`NSString`,添加一个便捷的方法来判断字符串是否为空: ```objc @interface NSString (Utils) - (BOOL)isEmptyOrNil; @end @implementation NSString (Utils) - (BOOL)...

    C++实现判断一个字符串是否为UTF8或GBK格式的方法

    本文实例讲述了C++实现判断一个字符串是否为UTF8或GBK格式的方法。分享给大家供大家参考,具体如下: 在处理外部数据的时候,很可能因为数据格式不一样而导致乱码,甚至导致某些程序挂掉。鉴于对多数系统来说,使用...

    PB判断字符串是否有中文

    #### 方法一:判断第一个字符是否为汉字 这种方法通过检查字符串的第一个字符来判断其是否为中文。具体实现步骤如下: 1. **提取第一个字符**:首先,我们需要从待检测的字符串中提取出第一个字符。这里使用了`Mid...

    判断一个字符串是否是中心对称 C++描述

    判断一个字符串是否是中心对称 C++描述

    用c++比较两个字符串的大小

    - 通过比较每个字符的ASCII值来判断两个字符串的大小关系。如果遇到不匹配的情况,则立即输出比较结果并终止循环。 - 如果所有字符都匹配且达到字符串末尾(即遇到`\0`),则输出“str1=str2”。 4. **异常情况...

    js判断输入字符串是否为空、空格、null的方法总结

    判断字符串是否为空 var strings = ''; if (string.length == 0) { alert&#40;'不能为空'&#41;; } 判断字符串是否为“空”字符即用户输入了空格 var strings = ' '; if (strings.replace(/(^s*)|(s*$)/g, )....

    delphi计算两个字符串相似度源码 Levenshtein算法版

    Levenshtein算法,也称为编辑距离算法,就是用于衡量两个字符串之间差异程度的一种方法。本文将深入探讨如何使用Delphi编程语言来实现这一算法,并分析其原理和应用。 Levenshtein算法的核心思想是通过计算将一个...

    判断一个字符串是否为数字(delphi源码)

    有时我们需要判断一个字符串是否代表一个有效的数字,这样的功能可以应用于多种场景,比如数据验证、数值计算等。本文将基于提供的Delphi源代码来解析如何实现这一功能。 #### 二、Delphi 语言简介 Delphi 是一种...

Global site tag (gtag.js) - Google Analytics